34 lines
695 B
JavaScript
34 lines
695 B
JavaScript
let angle = 0;
|
|
let w = 24;
|
|
let ma;
|
|
let maxD;
|
|
|
|
function setup() {
|
|
createCanvas(400, 400, WEBGL);
|
|
ma = atan(cos(QUARTER_PI));
|
|
maxD = dist(0, 0, 200, 200);
|
|
}
|
|
|
|
function draw() {
|
|
background(100);
|
|
ortho(-400, 400, 400, -400, 0, 1000);
|
|
rotateX(-ma);
|
|
rotateY(-QUARTER_PI);
|
|
|
|
for (let z = 0; z < height; z += w) {
|
|
for (let x = 0; x < width; x += w) {
|
|
push();
|
|
let d = dist(x, z, width / 2, height / 2);
|
|
let offset = map(d, 0, maxD, -PI + 2, PI + 2);
|
|
let a = angle + offset;
|
|
let h = floor(map(sin(a), 0, 1, 100, 300));
|
|
translate(x - width / 2, 0, z - height / 2);
|
|
normalMaterial();
|
|
box(w, h, w);
|
|
pop();
|
|
}
|
|
}
|
|
|
|
angle -= 0.05;
|
|
}
|