ページ 11

時計の作成(java)

Posted: 2013年7月27日(土) 21:04
by th
アナログ時計を作成していて
ちょっと意味の分からない処理になってしまったので
質問させていただきます
java言語でGrahics2Dを使っているのですけど
時間を取得して(完璧に取得されている)
その時間を使って針を動かす処理を書いているのですがうまく動きません

具体的には
秒針を6度ずつ回していき
分針なら1分間に6度
時針なら一時間に30度
と回していっていく予定です
今は秒速と分速を動かしているのですが
あきらかに針の進み方がおかしいです(15秒のはずなのに12回くらいしか動いてません)
プログラムの一部を書きますので
どこが悪いのかよかったら教えてください

コード:

rad = 6*second;   (second)には秒数が入っていて毎秒更新されていることは確認しました)
        g2.rotate(-rad, cx, cy);  (cx,cy)は画面の中心になります
 
        g2.drawString(str,cx,cy);
      
        
        rad= 6*minute;  //分針(minuteには分が入っています)
        g2.rotate(-rad, cx, cy); 
        g2.drawString(str1,cx,cy);
秒針が明らかに一分で60回動いてません

Re: 時計の作成(java)

Posted: 2013年7月27日(土) 21:15
by みけCAT
移動する回数が足りないのは、タイマーの不都合ではないでしょうか?
角度はラジアンで指定するべきなのではないでしょうか?[要出典]

Re: 時計の作成(java)

Posted: 2013年7月27日(土) 22:48
by へにっくす
Class Graphics2D#rotate
引数の説明をよく読みましょう。ラジアン指定です。
ラジアンとは、180度をπ(≒3.14)であらわした角度の単位です。
弧度法(ラジアン)