xxxxxxxxxx
65
var array = ['0'];
var n = 0;
var turtle;
var positions = [];
var angles = [];
function setup() {
createCanvas(400, 400);
background(220);
turtle = new Turtle(width/2,height/2);
turtle.setWeight(2);
turtle.setAngleMode(DEGREES);
}
function lSystem(input){
let l = input.length;
var output = [];
var rule;
for(var i = 0; i < l; i++){
if(input[i] == '1'){
rule = ['1','1'];
} else if (input[i] == '0'){
rule = ['1','[','0',']','0']
} else if(input[i] == '['){
rule = ['[']
} else if(input[i] == ']'){
rule = [']']
}
for(let j = 0; j < rule.length; j++){
append(output,rule[j]);
}
}
return output;
}
function draw() {
if(n == 3){
noLoop();
}
if(frameCount % 10 == 0){
//for(var i = 0; i < 15; i ++){
for(var j = 0; j < array.length; j++){
var rule = array[j];
if(rule == '0'){
turtle.moveForward(10);
} else if(rule == '1'){
turtle.moveForward(20);
} else if(rule == '['){
append(positions,turtle.pos);
append(angles,turtle.heading);
turtle.rotate(45);
} else if(rule == ']'){
turtle.pos = positions[positions.length-1];
turtle.heading = angles[angles.length-1];
turtle.rotate(-45);
}
//}
}
console.log(array);
array = lSystem(array);
n++;
}
}