我的数学有问题,说实话,就数学而言,我不太确定我在做什么。
以下是适用的代码:
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)));
最佳答案
这是数学计算(假设您从日历中获取了要显示的小时、分钟和秒)
// hour
theta = 90 - 30*hour - minute/2;
//minute
theta = 90 - 6*minute - second/10;
//second
theta = 90 - 6*second;
给出以度为单位的角度,乘以 Math.PI/180 以转换为弧度。手的端点 a 位于 (r*cos(theta), -r*sin(theta)) 处,距离 (centerX, centerY)。问候,-M.S.
关于java - 无法获得 Gui Java Clock 的正确点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4753712/