xxxxxxxxxx
let n, tam, maxtam;
n = 10;
let rx = [],
ry = [],
rz = [];
let esp = 10;
let rodar = false;
let poly = true;
function setup() {
tam = [window.innerWidth, window.innerHeight];
maxtam = min(tam);
createCanvas(tam[0], tam[1], WEBGL);
angleMode(DEGREES);
strokeWeight(2);
for (let i = 0; i < esp * n; i++) {
rz[i] = 0;
rx[i] = 0;
ry[i] = 0;
}
}
function draw() {
let aux = clique * 255;
background(aux);
fill(aux, aux, aux, 255 / n * 1.5)
stroke(!clique * 255);
orbitControl();
if (!rodar) {
if (rotationX * rotationY * rotationZ != 0 && rotationX * rotationY * rotationZ != null) {
rodar = true;
}
}
for (let i = esp * n; i > 0; i--) {
rz[i] = rz[i - 1];
rx[i] = rx[i - 1];
ry[i] = ry[i - 1];
}
if (rodar) {
rz[0] = rotationZ;
rx[0] = rotationX;
ry[0] = rotationY;
} else {
ry[0] = map(mouseX, 0, tam[0], 0, -360);
rx[0] = map(mouseY, 0, tam[1], 0, -180);
}
for (let i = 0; i < n; i++) {
push();
rotateZ(rz[esp * i]);
rotateX(rx[esp * i]);
rotateY(ry[esp * i]);
if (poly) { //cube
box(maxtam / 2 * (i + 1) / n);
} else { //octahedron
sphere((maxtam / 2 * (i + 1) / n) / sqrt(2), 4, 2);
}
pop();
}
}
clique = true;
function mouseClicked() {
clique = !clique;
if (clique) {
poly = !poly;
}
}