假设我有一个圆圈,如果用户沿着圆圈的路径顺时针拖动鼠标,计数器会增加,如果他逆时针拖动鼠标,计数器就会减少。在 Java 中实现这一点的最佳方法是什么?我想需要三角,以便程序知道用户何时顺时针或逆时针拖动,对吧?不是寻找代码示例,只是帮助理论,这样我就可以从正确的方法开始。
由于您可能可以访问圆,因此请获取其中心点坐标。然后获取鼠标的坐标。之后,计算矢量和x-axis
之间的角度。
为此,请先将圆点设置为假想坐标系的中心,然后将鼠标坐标移动到此系统。之后,您将atan2
应用于新的鼠标坐标。结果是所需的角度。
Point center = ...;
Point mouse = ...;
Point shiftedMouse = new Point(mouse.x - center.x, mouse.y - center.y);
double angle = Math.atan2(shiftedMouse.y, shiftedMouse.x);
此时,如果您愿意,您可能需要将角度的结果转换为度或类似的东西。你可以看看维基百科#atan2。
当然,如果您知道它的含义,您也可以将其保留为(-pi, pi]
格式并使用它。
现在,您可以跟踪此角度如何变化。如果它增加,则鼠标逆时针移动;如果它减少,那么顺时针等等(或者反过来,试试吧)。照顾好359°
0°
之后的束缚,然后1°
来。