xxxxxxxxxx
103
const prev = "FF(FF)F(F)F(F)F(F)FF(F)[+F(F)F(F)[-F(F)[+F(F)[+(F[+X][-X]FX)][-(F[-X]FX)]F(F)(F[+X][-X]FX)][-F(F)[+(F[+X][-X]FA)][-(F[+X][-X]FB)]F(F)(F[+X][-X]FX)]F(F)F(F)F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[-X]FX)]F(F)F(FF)F(F)F(F)F(FF)F(F)[+F(FF)[+(F[++X][-X]FX)][-(F[+X][-X]FX)]F(F)B][-F(F)[+(F[+X][-X]FX)][--(F[+X][-X]FA)]F(F)(F[+X][-X]FA)]F(F)F(F)F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)][-F(F)F(F)F(F)F(F)[+FF(F)[+F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FB)]F(F)A][-F[+(F[+X][-X]FX)][-(F[++X][-X]FX)]F(F)B]F(F)F(F)F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FB)][-F(F)F(F)[+F(F)[-(F[++X][-X]FX)]F(F[+X][-X]FX)][-F[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(FF)(F[+X][-X]FX)]F(F)F[+(F[+X][-X]FA)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)]F(F)F(F)F(F)F(F)B]F(F)FFF(F)F(F)F(F)F(F)F(F)F(F)FF(F)F(F)F(F)F(F)[+F(F)F[+F(F)[+(F[+X][-X]FX)][-(F[++X][-X]FX)]F(F)(F[++X][-X]FX)][-F(F)[+(F[-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FB)]F(F)F(F)F(F)[+(F[+X][-X]FA)]F(F)(F[++X][-X]FX)][--F(F)F(F)[+F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)][-F(F)[+(F[+X][-X]FB)][-(F[+X][-X]FA)]F(F)(F[+X][-X]FA)]F(F)F(F)F(F)[+(F[+X][-X]FB)][-(F[+X][-X]FX)]FB]F(F)F(F)F(F)F(F)F(F)F(F)[-F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FA)]F(F)(F[+X][-X]FX)]F(F)FF(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)B";
const curr = "F(F)F(F)F(F)F(FF)FF(F)F(F)F(FF)F(F)F(F)F(F)F(F)F(F)[+F(F)F(F)F(F)F(F)[-F(F)F(F)[+F(FF)F(F)[+F(F)[+(F[+X][--X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FA)][-F(F)[-(F[+X][-X]FX)]F(F)(F[+X][-X]FB)]F(F)F(F)F(F)[+(F[+X]FX)][-(F[+X][-X]FB)]F(F)(F[+X][-X]FA)][-F(F)F(F)[+F(F)[+(F[++X][-X]FX)][-(F[+X][-X]FX)]F(F)A][-F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FA)]F(F)B]F(F)F(F)F(F)[+(F[++X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)]F(F)F(F)F(F)F(F)F(F)F[+F(F)[+(F[+X][--X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)][-F[+(F[++X][-X]FX)][-(F[+X][-X]FB)]F(F)(F[+X][-X]FX)]FF(F)F(F)[-(F[+X][-X]FX)]F(F)(F[+X][-X]FA)]F(F)FF(F)F(F)F(F)F(F)FF(F)F(F)F(F)F(F)F(F)F(F)F(F)[+F(F)F(F)F[+F(F)[++(F[+X][-X]FA)][-(F[+X][--X]FX)]F(F)(F[+X][-X]FX)][-F(F)[+(F[+X][--X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)]F(F)F(F)B][-F(F)F(F)[+F(F)[+(F[++X][-X]FX)][-(F[+X][-X]FX)]F(FF)(F[++X][-X]FX)][--F(F)[+(F[-X]FX)][-(F[+X][-X]FA)]F(F)A]F(F)F(F)F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)A]F(F)FF(F)F(F)F(F)F(F)[+F(F)[+(F[+X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)][-F(F)[+(F[++X][-X]FX)][-(F[+X][-X]FB)]F(F)(F[+X][-X]FA)]F(F)F(F)F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FA)]F(F)(F[+X][-X]FX)][-F(F)F(F)F(F)F(F)F(F)F(F)F(F)F(F)[+F(F)F(F)F(F)[+FF(F)[+F(F)[+(F[-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)][-F(F)[+(F[+X][-X]FX)][-(F[++X][-X]FX)]F(F)B]F(F)F(F)A][-F(F)[+F(F)[+(F[+X][--X]FX)][-(F[+X][--X]FX)]F(FF)(F[+X][-X]FB)][-F(F)[++(F[+X][-X]FX)][-(F[+X][-X]FA)]F(F)(F[+X][-X]FX)]FF(F)B]F(F)F(F)F(F)F(F)F(F)F(F)[+F(F)[+(F[+X][--X]FX)][-(F[-X]FX)]F(F)(F[+X][-X]FB)][-F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X]FX)]F(F)FF(F)[+(F[+X][-X]FB)][-(F[+X][-X]FA)]F(F)B][-F(F)F(F)F(F)F[+FF(F)[-F(F)[++(F[+X][-X]FX)][-(F[++X][-X]FX)]F(F)(F[+X][-X]FX)]FF(F)[+(F[+X][-X]FB)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)][-F(F)[+F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FB)]F(F)(F[+X][--X]FX)][-F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)]F(F)F(F)F(F)F[+(F[+X][-X]FX)][-(F[-X]FX)]F(F)(F[+X][-X]FX)]F(F)F(F)F(FF)[+F(F)[+(F[+X]FX)][-(F[+X][-X]FX)]F(F)A][-F(F)[+(F[-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)]F(F)F(F)F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FA)]F(F)(F[+X][--X]FX)]F(F)F(F)F(F)F(F)F(F)F(F)F(F)FB]F(F)F(F)FF(FF)F(F)F(F)F(F)F(F)FF(F)F(F)F(F)F(F)FF(F)F(F)F(F)F(F)FF(F)F(F)F(F)F(F)F(F)F(F)[+F(F)F(F)F(F)[+F(F)F(F)[+F(F)[+(F[++X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[-X]FX)][-F(F)[++(F[+X][-X]FB)][-(F[+X][-X]FX)]F(F[++X][-X]FX)]F(F)F(F)F(F)[++(F[+X][-X]FA)][-(F[+X][--X]FX)]F(F)(F[+X][-X]FX)][-FF(F)[+F(FF)[-(F[+X][-X]FB)]F(F)(F[+X][-X]FX)][-F(F)[+(F[+X][-X]FA)][-(F[+X][-X]FB)]F(F)(F[+X][-X]FA)]F(F)F(F)F(F)[+(F[+X][-X]FX)][-(F[-X]FX)]F(F)B]F(F)F(F)F(F)F(F)F(F)F(F)[+F(F)[+(F[+X][-X]FX)][-(F[++X][-X]FX)]F(F)A]F(F)F(F)F(F)[++(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X]FX)][--FF(F)F(F)F(F)[+F(F)F(F)[+F(F)[+(F[++X][-X]FX)][-(F[+X][-X]FB)]F(F)(F[+X][-X]FB)][-F(F)[+(F[-X]FX)][-(F[+X][-X]FA)]F(F)(F[+X][-X]FX)]F(F)F(F)F(F)[+(F[+X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][--X]FX)][-F(F)F(F)[+F(F)[+(F[+X][-X]FB)][-(F[+X][-X]FX)]FB][-F(F)[+(F[+X]FX)][-(F[+X][-X]FX)]F(F)A]FF(F)F(F)[+(F[+X][-X]FB)][-(F[+X][-X]FX)]F(F)A]F(F)FF(F)F(F)F(F)F(FF)[+F[+(F[+X][-X]FX)][-(F[+X][--X]FX)]F(F)B][-F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F[+X][--X]FX)]F(FF)B]F(F)F(F)F(F)F(F)F(F)F(F)F(F)FFF(F)F(FF)F[-F(F)F(F)[+F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)][-F(F)[+(F[+X][-X]FA)][-(F[+X][-X]FX)]F(F)A]F(F)FF[+(F[-X]FX)][-(F[+X][-X]FA)]F(FF)(F[+X][-X]FX)]F(F)F(F)F(FF)F(F)F(F)[+F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FX)]F(F)(F[+X][-X]FX)][-F(F)[+(F[+X][-X]FX)][-(F[+X][-X]FA)]F(F)(F[+X][-X]FX)]F(F)F(F)B";
const len = 8;
const ang = 25;
let drawRules;
const dur = 6;
function setup() {
createCanvas(1920, 1080);
strokeWeight(2);
drawRules = {
"A": (amt) => {
// Draw circle at current location
noStroke();
fill("#E5CEDC");
circle(0, 0, len*2 * amt);
},
"B": (amt) => {
// Draw circle at current location
noStroke();
fill("#FCA17D");
circle(0, 0, len*2 * amt);
},
"F": (amt) => {
// Draw line forward, then move to end of line
stroke("#9ea93f");
line(0, 0, 0, -len * amt);
translate(0, -len * amt);
},
"+": (amt) => {
// Rotate right
rotate(PI/180 * -ang * amt);
},
"-": (amt) => {
// Rotate right
rotate(PI/180 * ang * amt);
},
// Save current location
"[": push,
// Restore last location
"]": pop,
};
// noLoop();
textAlign(LEFT, CENTER);
textSize(85);
}
function draw() {
background(28);
// const amt = 0.4;
const amt = (-1 * cos(TWO_PI * millis()/(1000 * dur)) + 1)/2;
// const amt = map(mouseX, 0, width, 0, 3);
drawLsysLerp(width/4, height, prev, 1);
drawLsysLerp(width* 3/4, height, curr, 1);
drawLsysLerp(width/2, height, curr, amt);
}
function keyPressed() {
fullscreen(!fullscreen());
}
function drawLsysLerp(x, y, state, t) {
t = constrain(t, 0, 1);
let lerpOn = false;
push();
translate(x, y);
for(let i = 0; i < state.length; i ++) {
let c = state[i];
if(c === "(") {
lerpOn = true;
continue;
}
if(c === ")") {
lerpOn = false;
continue;
}
let lerpT = t;
if(!lerpOn) {
lerpT = 1;
}
if(c in drawRules) {
drawRules[c](lerpT);
}
}
pop();
}