プロが教える店舗&オフィスのセキュリティ対策術

アナログ時計のプログラムを作ろうとしているのですが、例えば、秒針の先端座標(x、y)を現在時刻に合わせて収得するにはどうすればいいのですか?

2パイ*(現在秒-15)/60 = ラジアンだと思うのですが、なぜこの式が成り立つのですか?また、時間の針はどのような公式になるのですか?
教えてください。

A 回答 (3件)

まず、話を簡単にするために、


1.座標(0,0)に時計の中心がある
とします。

    12
    |   /
 針の長さ:L/↑
    | / θ:角度
    |/  |
9---+-----3
    |
    |
    6

2.図の斜めの線を秒針とし、
 L:針の長さ
 θ:針の角度(ラジアン)
 とすると

3.針の先端の座標は
 x=L×cosθ
 y=L×sinθ
です。

4.で後は、「θを秒から算出する式」を考え、
 それを上記式のθに代入すればよし

5.「θを秒から算出する式」ですが、
 0秒なら、2π×(1/4)で、
 1秒立つごとに、そこから一秒に相当する
 ラジアンずつ減っていきます。
・一秒に相当するラジアンは
 2π×(1/60)ですから
・t秒の時の角度θは
  θ=2π×(1/4)
    -2π×(1/60)×t
   =2π/60×(15-t)
6.したがって
  t秒の時の秒針の先端座標(x、y)は
  x=L×cos(2π/60×(15-t))
  y=L×sin(2π/60×(15-t))
 となります。
7.分針の場合も同じで
  m分の時の分針の先端座標(x、y)は
  x=L×cos(2π/60×(15-m))
  y=L×sin(2π/60×(15-m))
8.時針を考えるときは、
   分針・秒針は60分・秒で一回転するのが
   時針は   12時間で 一回転する
  ということに注意すると

・h時の時の角度θは
  θ=2π×(1/4)
    -2π×(1/12)×t
   =2π/12×(3-t)
 ですから、
・h時の時の時針の先端座標(x、y)は
  x=L×cos(2π/12×(3-h))
  y=L×sin(2π/12×(3-h))
 となります。

これでどうでしょうか?
    • good
    • 1
この回答へのお礼

詳しい説明ありがとうございました。助かりました。

お礼日時:-0001/11/30 00:00

プログラムについては無知なのですが、数学的なことということで。


まず、円周=360(°)=2π(rad)というのはご存知ですよね。ということで、2π/60というのは1秒で何radか、ということになりますね。それに秒数をかけているわけです。
15を引くというのは、時計の12の部分を0(ゼロ)にするために、というわけですね。普通横軸が0になっているわけですから。(アナログ時計って、15秒のところが真横にきてるでしょう?)
そう考えれば、時間の針(短針)も同様でいいわけですね。
    • good
    • 1

 懐かしいですね。

昔やりましたよ。

 x = cos(dig/180*pi)*leng+cx
 y = sin(dig/180*pi)*leng+cy

 記憶があいまいで間違っているかもしれませんが……。
 まず変数digは針の角度。ラジアンではなく通常の角度単位です。
 変数piはもちろん円周率。
 変数lengは針の長さ。
 変数cx、cyは中心座標。

 そしてここから導かれる変数x、yが、針の先端の座標です。
 ただし、cosとsinが反対だったかもしれません。
 また角度0度の位置が上ではなく、右か左になるはずなので気をつけてください。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!