日々の記録

ほどよく書いてきます。

prossessingで時計をつくる

2014年08月15日 23時40分05秒 | AVR

お盆休みが暇だったので、prosessingというお絵かきが出来るというプログラミング言語で時計を造ってみた。デザインはスイス鉄道時計。

ちなみに、processingはグラフィックにこだわったものが作れそう。

float R_dot=220;
float R_hour=150;
float R_minute=240;
float R_second=180;

void setup(){
  size(500,500);
  background(255);
  smooth();
  frameRate(1);
}
void draw(){
  translate(250,250);
  colorMode(RGB,256);
  draw_back();
  dots_around_clock();
  hourhand();
  minutehand();
  secondhand();
}
void draw_back(){
  noStroke();
  background(0); //fill black

  fill(255);    //while circle
  ellipse(0,0,480,480);  //white circle
   
}
void dots_around_clock(){
  pushMatrix();
  stroke(0,255);
  strokeWeight(2);
  rectMode(CENTER);
  fill(0);
  for(int i=0;i<60;i++){
    rotate(radians(6));
    line(R_dot-5,0,R_dot+14,0);
  }
  strokeWeight(0);
  for(int i = 0;i<360;i+=30){
    rotate(radians(30));
    rect(R_dot,0,35,15);
  }
  popMatrix();
}
void hourhand(){
  pushMatrix();
  float hand_angle;
  hand_angle = radians(30*hour()+minute()/2-90) ;
  stroke(0,255);
  strokeWeight(0);
  fill(0);
  rectMode(CENTER);
  rotate(hand_angle);
  rect(R_hour/2-40,0,R_hour+40,20);  
  popMatrix();
}
void minutehand(){
  pushMatrix();
  float hand_angle;
  hand_angle = radians(6*minute()+0.1*second()-90);
  stroke(0,255);
  strokeWeight(0);
  fill(0);
  rectMode(CENTER);
  rotate(hand_angle);
  rect(R_minute/2-40,0,R_minute+40,15);  
  popMatrix();  
}
void secondhand(){
  float hand_angle;
  stroke(255,0,0,255);
  strokeWeight(5);
  hand_angle = radians(6*second()-90);
  line(-40*cos(hand_angle),-40*sin(hand_angle),R_second*cos(hand_angle),R_second*sin(hand_angle));
  fill(255,0,0,255);
  ellipse(R_second*cos(hand_angle),R_second*sin(hand_angle),20,20);
  ellipse(0,0,10,10);
}
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする