float CAMERA_RADIOUS = 1000;
float CAMERA_RADIAN_SPEED = PI / 64;
float radian1;
float radian2;
float radianSpeed1;
float radianSpeed2;
float centerX;
float centerY;
float centerZ;
void setup(){
size(500, 500, P3D);
smooth();
frameRate(24);
radian1 = random(PI * 2);
radian2 = random(PI * 2);
radianSpeed1 = random(1) < 0.5 ? CAMERA_RADIAN_SPEED : -1.0 * CAMERA_RADIAN_SPEED;
radianSpeed2 = random(1) < 0.5 ? CAMERA_RADIAN_SPEED : -1.0 * CAMERA_RADIAN_SPEED;
centerX = width/2;
centerY = height/2;
centerZ = height/2;
}
void draw(){
background(255);
float cameraX = CAMERA_RADIOUS * sin(radian1) * cos(radian2);
float cameraY = CAMERA_RADIOUS * sin(radian1) * sin(radian2);
float cameraZ = CAMERA_RADIOUS * cos(radian1);
camera(centerX + cameraX, centerY + cameraY, centerZ + cameraZ, centerX, centerY, centerZ, 0, 1, 0);
pushMatrix();
stroke(0);
noFill();
translate(centerX, centerY, centerZ);
box(100);
stroke(100, 200);
sphere(CAMERA_RADIOUS);
popMatrix();
update();
}
void update(){
radian1 += radianSpeed1;
radian2 += radianSpeed2;
if(radian1 < 0){
radian1 += PI * 2;
} else if(radian1 >= PI * 2){
radian1 -= PI * 2;
}
if(radian2 < 0){
radian2 += PI * 2;
} else if(radian2 >= PI * 2){
radian2 -= PI * 2;
}
}