2011-01-20 6 views
1

私の数学には何か問題があり、正直言って私は数学が行っている限り私が何をしているのか正確には分かりません。Gui Java Clockの正しい点を得ることができません

HERESに該当するコードがどのようなものか:ここで

seconds = (cal.get(Calendar.SECOND)+(cal.get(Calendar.MILLISECOND)/1000.0))-15; 
       minutes = cal.get(Calendar.MINUTE)+(seconds/60); 
    hours = ((cal.get(Calendar.HOUR))+(minutes/60))/12; 
       //draw sec hand 
       g2.drawLine(cx, cy, cx+(int)(Math.cos((Math.PI/30)*(seconds))*(r/2-25)), cy+(int)(Math.sin((Math.PI/30)*seconds)*(r/2-25))); 
       //draw min hand 
       g2.drawLine(cx, cy, cx+(int)(Math.cos((Math.PI/30)*(minutes)-(Math.PI/2))*(r/2-70)), cy+(int)(Math.sin((Math.PI/30)*minutes-(Math.PI/2))*(r/2-70))); 
       //draw hour hand 
       g2.drawLine(cx, cy, cx+(int)(Math.cos((Math.PI/12)*(hours))*(r/2-120)), cy+(int)(Math.sin((Math.PI/12)*hours)*(r/2-120))); 
+2

簡単に実行できるように[SSCCE](http://sscce.org/)を投稿してください - より速く/簡単に答えるようになります –

+3

'double minutesAngle =(Math。 PI/30)*(分) - (数2)これにより、コードをより読みやすく、デバッグしやすくなります。正確に何がうまくいかないか教えてください。 – maaartinus

答えて

0

数学(Calendarから表示するには、あなたが時間を持っ分と秒を想定)

// hour 
theta = 90 - 30*hour - minute/2; 

//minute 
theta = 90 - 6*minute - second/10; 

//second 
theta = 90 - 6*second; 

は度の角度を与えていますラジアンに変換するには、Math.PI/180を掛けます。手の終点は(centerX、centerY)から(r * cos(theta)、-r * sin(theta))にある。よろしくね、M.S.

+1

Math.toDegrees()はより良いオプションです。あなたのための計算を行い、自分が何をしているかをよりわかりやすく表します。 – berry120

関連する問題