假设我有一个圆圈,如果用户沿着圆圈的路径顺时针拖动鼠标,则计数器会增加,如果他逆时针拖动鼠标,它会减小。在Java中实现这个的最佳方法是什么?我想是需要触发器,所以程序知道用户何时顺时针或逆时针拖动,对吧?不寻找代码示例,只是帮助理论,所以我可以从正确的方法开始。
答案 0 :(得分:0)
由于您可能有权访问该圆圈,因此请获取其中心点坐标。
然后获取鼠标的坐标。之后,您计算向量与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);
此时你可能需要将角度的结果转换为度数或类似的东西,如果你愿意的话。您可以查看Wikipedia#atan2
当然,如果您知道它的含义,您也可以将其保留为(-pi, pi]
格式并使用它。
现在您可以跟踪此角度的变化情况。如果它增加,则鼠标逆时针移动;如果它减少,然后顺时针等等(或者反过来,只是尝试它)。在359°
0°
然后1°
来到之后,请注意这一点。