xxxxxxxxxx
let f = 0;
let W = 400;
function setup() {
createCanvas(800, W, WEBGL);
noStroke();
}
function draw() {
[-W, W, -W].map(j => pointLight([W], 0, j, 0))
box(9000, 6000);
for(let i = 0; i < 8000; i++){
let c = (i < 4000) ? f : 0;
push();
rotateY(myRandom(5, i, f));
rotateZ(myRandom(9, i, f));
let A = atan(c * 9) / 7;
translate(0, 90 + A * f * 10000);
sphere(9);
pop();
}
if (f > 2) {
f = 0.008;
} else {
f += 0.008;
}
}
function myRandom(pR, pG, pF) {
return noise(pG * pR) * 1.2 * (pF + pR);
}
// ----------------------------------------
// Version before compression
// ----------------------------------------
// f = 0
// draw = _ => {
// f || createCanvas(800, W=400, WEBGL);
// [-W,W,-W].map(i=>pointLight([W],0,i,0))
// box(9000,6000)
// i=8000
// while (i--) {
// push(i<4000?c=f:c=0);
// rotateY(R(5))
// rotateZ(R(9))
// translate(0, 90+(atan(c*9)/7)*f*10000)
// pop(sphere(9, W));
// }
// f>2?f=.008:f += .008
// }
// R = r => noise(i * r) * 1.2 * (f + r)
// ----------------------------------------
// Minimized
// ----------------------------------------
// f=0,draw=e=>{for(f||createCanvas(800,W=400,WEBGL),[-W,W,-W].map(e=>pointLight([W],0,e,0)),box(9e3,6e3),i=8e3;i--;)push(i<4e3?c=f:c=0),rotateY(R(5)),rotateZ(R(9)),translate(0,90+atan(9*c)/7*f*1e4),pop(sphere(9,W));f>2?f=.008:f+=.008},R=e=>1.2*noise(i*e)*(f+e);//#つぶやきProcessing