お盆休みが暇だったので、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); }