我正在构建一个滚轮菜单控件。这个想法是你转动轮子,直到你想要采取行动的项目出现在视野中,然后你点击它或其他任何东西。我试图弄清楚如何将用户的鼠标移动(x 和 y)转换为旋转轮子的度数。我可以实现这一切,我只是缺少进行转换的数学。任何帮助或指针表示赞赏!
问问题
1028 次
2 回答
4
如果用户将鼠标从 [x1,y1] 移动到 [x2,y2],您基本上想要的是找到
θ=θ 1 -θ 2
在哪里:
θ 1 = Math.atan2(y1, x1);
θ 2 = Math.atan2(y2, x2);
现在所有这一切都取决于您定义原点的位置(车轮的中心)。如果您的原点是 [x0,y0],则只需从实际鼠标坐标中减去这些值。
同样在屏幕上,坐标系是颠倒的,所以 0,0 在左上角而不是左下角,所以你需要翻转它,但数学本质上是相同的。
另请注意,角度以弧度而不是度数为单位。
于 2010-11-09T08:31:38.467 回答
1
取atan2()
从控件中心偏移的两个后续位置中的一个,并将值更改为角度的增量乘以一个常数。
于 2010-11-09T07:13:17.010 回答