xxxxxxxxxx
77
let textString = "muttersprache";
let letters = [];
let state = "stable"; // "stable", "quantum_explosion"
let centerX, centerY;
let myFont;
function preload(){
fonty = loadFont('Bootzy TM.ttf');
}
function setup() {
createCanvas(600, 600);
textSize(25);
textAlign(CENTER, CENTER);
textFont(fonty);
centerX = width / 2;
centerY = height / 2;
let startX = centerX - textWidth(textString) / 2;
for (let i = 0; i < textString.length; i++) {
letters.push({
char: textString[i],
x: startX + textWidth(textString[i]) / 1.2,
y: centerY,
speedX: 0,
speedY: 0,
size: 25, // Initial font size
growthRate: random(0.05, 0.15) // Random growth rate for each letter
});
startX += textWidth(textString[i]);
}
setTimeout(() => {
if (state === "stable") {
state = "quantum_explosion";
for (let letter of letters) {
letter.speedX = random(-0.1, 0.1); // Slower explosion
letter.speedY = random(-0.1, 0.1);
}
}
}, 1600); // Slightly longer delay before explosion
}
function draw() {
background(255);
// Draw connecting lines under the letters
stroke(0);
strokeWeight(1);
noFill();
beginShape();
for (let letter of letters) {
// Position the line slightly below the letters, adjusted for font size
vertex(letter.x, letter.y + letter.size/2.5);
}
endShape();
if (state === "quantum_explosion") {
for (let letter of letters) {
letter.x += letter.speedX * 2;
letter.y += letter.speedY * 2;
// Increase size as the letter moves away from center
let distFromCenter = dist(letter.x, letter.y, centerX, centerY);
if (distFromCenter > 10) { // Start growing after moving a bit
letter.size += letter.growthRate * (distFromCenter / 50);
}
}
}
// Draw the letters with varying sizes
noStroke();
fill(0);
for (let letter of letters) {
textSize(letter.size);
text(letter.char, letter.x, letter.y);
}
saveFrames('muttersprache', 'jpg', 15, 22);
}