如何创建通过鼠标拖动更新的计数器



假设我有一个圆圈,如果用户沿着圆圈的路径顺时针拖动鼠标,计数器会增加,如果他逆时针拖动鼠标,计数器就会减少。在 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° 之后的束缚,然后来。

最新更新