xxxxxxxxxx
65
let rules = [
//rules for generation of Dragon Curve
{
in: "X",
out: "X+YF+"
},
{
in: "Y",
out: "-FX-Y"
}
]
let iteration = 0;
function iterateSystem(system) {
iteration += 1;
let newSystem = "";
for (let i = 0; i < system.length; i++) {
//current char
let char = system.charAt(i);
//test each rule
for (let rule of rules) {
if (char == rule.in) {
char = rule.out;
}
}
//add to newSystem
newSystem += char;
// print("working...");
}
return newSystem;
}
function drawSystem(system) {
let len = width / 4 * pow(0.75, iteration);
len *= 0.5;
let angle = radians(90);
background(0, 0, 0);
translate(width / 2, height / 2);
stroke(255);
colorMode(HSB);
for (let i = 0; i < system.length; i++) {
stroke(360*(i/system.length), 100, 100);
let char = system.charAt(i);
if (char === "F") {
line(0, 0, 0, -len);
translate(0, -len);
} else if (char === "+") {
rotate(angle);
} else if (char === "-") {
rotate(-angle);
} else if (char === "[") {
push();
} else if (char === "]") {
pop();
} else if (char === "|") {
rotate(radians(180));
}
}
}