我正在构建轮菜菜单控制。这个想法是您旋转方向盘,直到您要采用的物品为止,然后单击它或其他任何内容。我正在尝试弄清楚如何将用户的鼠标运动(X&Y)转换为旋转轮的学位数量。我可以实施所有内容,我只是错过了进行转换的数学。任何帮助或指针都将受到赞赏!

有帮助吗?

解决方案

Angle between mouse positions

如果用户将鼠标从[x1,y1]移动到[x2,y2],那么您基本上想要的是

θ=θ12

在哪里:

θ1 = Math.atan2(Y1,X1);

θ2 = Math.atan2(Y2,X2);

现在,所有这些都取决于您定义原点(车轮中心)的位置。如果您的原点是[x0,y0],则只需从实际鼠标坐标中减去这些值即可。

同样在屏幕上,坐标系统颠倒了,因此0,0位于左上角而不是底部左侧,因此您需要对其进行翻转,但是数学基本上是相同的。

另请注意,该角度是在弧度而不是度数中测量的。

其他提示

atan2() 随后的两个位置从控制的中心偏移,并通过角度乘以常数的三角洲更改值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top