【问题标题】:Find degrees (0-360º) of point on a circle查找圆上点的度数(0-360º)
【发布时间】:2011-07-10 23:21:28
【问题描述】:

我正在开发一个需要旋转形状的小型 web 应用程序。我 想通过抓住圆圈上的一个点来实现这一点 拖动它来旋转图像。

这里有一个简单的例子来帮助解释事情:

我的主圆圈可以拖动到画布上的任何位置。我知道这是 半径 (r) 和 12 点钟方向 (p0) 将始终为 (cx, cy - r)。什么 我需要知道 p1 的度数是多少(0-360º),所以我可以旋转 Raphael.rotate() 相应地调整主圈的内容。

我已经通过一堆不同的 JavaScript 公式来找到这个 (example),但似乎没有一个能给出介于 0-360 和我的基本数学技能之间的值 严重不足。

Color Picker demo(沿右侧环滑动光标)具有我想要的行为,但即使仔细研究了源代码,我似乎也无法准确地复制它。

任何能指出我正确方向的东西都将不胜感激。

【问题讨论】:

    标签: svg raphael trigonometry


    【解决方案1】:
    // Angle between the center of the circle and p1,
    // measured in degrees counter-clockwise from the positive X axis (horizontal)
    ( Math.atan2(p1.y-cy,p1.x-cx) * 180/Math.PI + 360 ) % 360
    

    圆心与 p0 之间的夹角始终为 +90°。详情请见Math.atan2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-20
      • 2012-12-15
      • 2015-10-17
      相关资源
      最近更新 更多