代码之家  ›  专栏  ›  技术社区  ›  Andrew Hedges

如何将鼠标移动转换为元素的旋转

  •  0
  • Andrew Hedges  · 技术社区  · 14 年前

    我正在建立一个控制盘菜单。这个想法是你旋转方向盘直到你想操作的项目出现在视图中,然后你点击它或其他什么。我正试图找出如何将用户的鼠标移动(x&y)转换为旋转轮子的度数。我可以实现它,我只是错过了数学做转换。感谢任何帮助或指点!

    2 回复  |  直到 14 年前
        1
  •  4
  •   bluesmoon    14 年前

    Angle between mouse positions

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

    = 1个 2个

    哪里:

    1个 =数学参数2(y1,x1);

    2个 =Math.atan2(y2,x2);

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

    同样在屏幕上,坐标系统是颠倒的,所以0,0在左上角而不是左下角,所以你需要翻转它,但是数学基本上是一样的。

    还要注意,角度是以弧度而不是度数来测量的。

        2
  •  1
  •   Ignacio Vazquez-Abrams    14 年前

    拿着 atan2() 从控件中心偏移的两个后续位置的值,并将该值更改为角度增量乘以常数。