xxxxxxxxxx
70
let a = [0, 0, 0, 0, 0, 0];
let gridres = 20;
let tilesize = 25;
let origin = [0, 0];
let wid = 0;
function setup() {
createCanvas(600, 1000, WEBGL);
origin[0] = (tilesize * gridres) / 2;
origin[1] = (tilesize * gridres) / 2;
wid = gridres * tilesize;
}
function draw() {
background(220);
a[1] = 0.001 * sin(frameCount * 2);
angleMode(DEGREES);
rotateX(-90);
translate(-origin[0], -origin[1] + 100, -200);
for (let i = 0; i < gridres; i++) {
for (let j = 0; j < gridres; j++) {
let x = tilesize * j;
let y = tilesize * i;
if (
pow(i - gridres / 2 + 0.5, 2) + pow(j - gridres / 2 + 0.5, 2) >=
pow(gridres / 2, 2)
) {
continue;
}
push();
//noStroke();
noFill();
translate(x, y, 0);
beginShape();
vertex(0, 0, p(x, y));
vertex(tilesize, 0, p(x + tilesize, y));
vertex(tilesize, tilesize, p(x + tilesize, y + tilesize));
vertex(0, tilesize, p(x, y + tilesize));
endShape(CLOSE);
pop();
}
}
push();
translate(0,wid/2,-300);
box(10,10,10);
rotateX(-90);
rotateZ(20);
translate(0,-450,0);
cone(200,900);
pop();
push();
//noStroke();
fill(200)
translate(0, 0, 400);
beginShape();
vertex(0, 0, 0);
vertex(wid, 0, 0);
vertex(wid, wid, 0);
vertex(0, wid, 0);
endShape(CLOSE);
pop();
}
function p(x, y) {
//return a[0] + a[1]*x + a[2]*y + a[3]*x*x + a[4]*x*y + a[5]*y*y;
x -= origin[0];
y -= origin[1];
return a[1] * x * x;
}