xxxxxxxxxx
int nb = 50;
float d1 = 220, d2 = 100;
void setup() {
size(500, 400, P3D);
noFill();
}
void draw() {
colorMode(HSB, nb);
background(nb/10);
translate(width/2, height/2);
rotateX(map(mouseY, 0, height, PI, -PI));
rotateY(map(mouseX, 0, width, -PI, PI));
float r, x, y, t, fc = float(frameCount) / 40;
for (float i = 0; i < nb; i++) {
t = i * TWO_PI / nb;
x = d2 * cos(t + fc);
y = d2 * sin(t + fc);
r = abs(d1 + x);
stroke((sin(i*TWO_PI/nb)+1)*nb/5, nb*((sin(i*TWO_PI/nb)+2)/4 + .3), nb*((cos(i*TWO_PI/nb)+2)/4 + .1));
pushMatrix();
translate(0, 0, y / 2);
ellipse(0, 0, r, r);
popMatrix();
}
}
void keyPressed(){
if(keyCode == LEFT)
d1 = max(10, d1-10);
else if(keyCode == RIGHT)
d1 = min(800, d1+10);
else if(keyCode == DOWN)
d2 = max(10, d2-10);
else if(keyCode == UP)
d2 = min(400, d2+10);
else if(keyCode == 81)
nb = max(10, nb-10);
else if(keyCode == 87)
nb = min(250, nb+10);
}