找到圆上的点的度数(0-360º)

时间:2011-07-09 15:27:29

标签: svg raphael trigonometry

我正在开发一个小型的webapp,我需要在其中旋转形状。一世 想通过在圆圈上抓住一个点来实现这一目标 拖动它来旋转图像。

以下是帮助解释事情的快速说明:

two points on circle, i'm looking to find the degrees of p1

我的主圈可以在画布上的任何位置拖动。我知道了 半径(r)和12点(p0)总是(cx,cy - r)。什么 我需要知道p1的程度是什么(0-360º)所以我可以旋转 使用Raphael.rotate()相应的主圆的内容。

我已经通过一系列不同的JavaScript配方来找到这个(example),但似乎没有一个给我0-360之间的值和我的基本数学技能 非常缺乏。

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

任何指出我正确方向的事情都会受到赞赏。

1 个答案:

答案 0 :(得分:9)

// 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