アナログ時計

グラフィック系プログラミング全般の話。
デジタルで取得した時刻を、アナログ時計風に表示するための針の角度の計算について。
まず、時刻をh(0〜23), m(0〜59), s(0〜59)の形で取得したとする。
これを、「その一日の開始から何秒」に変換する。

as = h * 3600 + m * 60 + s

そうすると、以下のようになる。(modは必ずしも必須ではない……使う言語の仕様による)

角度 計算式(degree) 備考
秒針 ( as mod 60 ) * 6
長針 ( as mod 3600 ) / 10
短針 ( as mod 43200 ) / 120 これだけ、得られる角度の範囲が0以上720未満になる。

ちなみに得られる数字は角度(degree)である。ラジアン(radian)への変換はおなじみ「180 degree = π radian」だ。

角度 計算式(radian) 備考
秒針 ( as mod 60 ) * π / 30
長針 ( as mod 3600 ) * π / 1800
短針 ( as mod 43200 ) * π / 21600 これだけ、得られるラジアンの範囲が0以上4π未満になる。

追記

epoch秒が取得できる環境ならば、

as = epoch mod 86400

としてすぐに計算できる。

なんでこんなエントリーを立てたのか

うみねこのなく頃に」の大時計は飽くまで演出なんだろうけど、嘘が多くてなんか気になったので。角度とか。