java - 无法获得 Gui Java Clock 的正确点

标签 java clock

我的数学有问题,说实话,就数学而言,我不太确定我在做什么。

以下是适用的代码:

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/

相关文章:

c++ - 是否确保 2 个连续的 std::chrono::steady_clock::now() 不相等?

Linux clock_gettime(CLOCK_MONOTONIC) 奇怪的非单调行为

java - 如何从JTable中的数据库中获取数据?

java - 在线程之间共享数据并且 JOptionPane 需要线程来运行!

java - hbase启动缓慢--调用观察程序时出错java.lang.NullPointerException : ZK is null

javascript - 同步客户端和服务器端时间

java - 计算java中HH/MM/SS格式的两个日期和时间之间的时间差?

java - getView 未在自定义适配器中调用

java - 交换框架中的面板

c++ - clock() 只返回 0