You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
845 B
34 lines
845 B
const firstLen = 8;
|
|
const nSegments = 16;
|
|
let firstSegment = null;
|
|
let frame = 0;
|
|
|
|
function setup() {
|
|
createCanvas(300, 300);
|
|
firstSegment = new Segment(0, 0, firstLen, 0);
|
|
let len = firstLen;
|
|
for(let i=1, seg = firstSegment; i < nSegments; i++, seg=seg.child){
|
|
let next = new Segment(
|
|
seg.end().x,
|
|
seg.end().y,
|
|
len,
|
|
0);
|
|
seg.child = next;
|
|
}
|
|
}
|
|
|
|
function draw() {
|
|
background(0);
|
|
frame = (frame+1);
|
|
for(let i=0, seg = firstSegment; seg; i++, seg=seg.child){
|
|
let delay = i*PI/nSegments+PI/4;
|
|
let coef = 3*PI/nSegments*sin(PI/256*frame-delay);
|
|
seg.setHeading(coef);
|
|
}
|
|
translate(width/2, height/2);
|
|
for(let i=0; i < 5; i++){
|
|
rotate(PI/2);
|
|
for(let seg = firstSegment; seg; seg=seg.child)
|
|
seg.draw();
|
|
}
|
|
}
|
|
|