Daily Creative Coding

元「30 min. Processing」。毎日、Creative Codingします。

カメラを回転させる

/**
* Rotation of Camera
*
* @author aa_debdeb
* @date 2015/09/26
*/


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;
  }
}