懲りずに再挑戦しますw
前回と同内容だと仮定します。
変更点
- +250や-90がノイズになるので、
translate・rotateで一括変更
- 数学苦手だとcos・sinがどっちってなるので、
PVector.fromAngleでわかりやすく
- ループしやすいように事前に配列を準備
Processing
1void setup() {
2 size(500, 500);
3 stroke(255);
4 smooth();
5}
6
7void draw() {
8 background(0);
9 translate(250, 250);
10 rotate(-PI / 2);
11
12 float hands[][] = {
13 // 値, 係数, strokeLength, strokeWeight
14 { second(), 360 / 60, 200, 1 },
15 { minute(), 360 / 60, 200, 2 },
16 { hour() + (minute() / 60.0), 360 / 12, 100, 4 } };
17
18 for (float[] hand : hands) {
19 float rad = radians(hand[0] * hand[1]);
20 PVector v = PVector.fromAngle(rad).mult(hand[2]);
21 strokeWeight(hand[3]);
22 line(0, 0, v.x, v.y);
23 }
24}
配列後半は固定値なので分けたほうが無駄がないが、スマートに分けにくかった。
名前付きタプルなんかが使えたらよかったが、ギリギリ許容範囲かなと。
四則演算が減って、個人的には意図が分かりやすくなったかなと思います。