2011-07-09 39 views
6

我正在研究一個小web應用程序,我需要旋轉形狀。 I 想通過抓住一個圓上的一個點並將其拖動以旋轉圖像來實現此目的。找到圓上的點(0-360º)

這裏有一個快速說明,以幫助解釋的事情:

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(將光標沿着右邊的環滑動)具有我想要的行爲,但即使仔細研究了源代碼,我似乎也無法準確複製它。

任何指向我在正確的方向將不勝感激。

回答

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