Найти градусы (0-360º) точки на окружности - PullRequest
7 голосов
/ 09 июля 2011

Я работаю над небольшим веб-приложением, в котором мне нужно вращать фигуры.Я хотел бы добиться этого, взяв точку на окружности и перетащив ее вокруг, чтобы повернуть изображение.

Вот краткая иллюстрация, чтобы помочь объяснить:

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формулировки, чтобы найти это ( пример ), но ни одна из них, кажется, не дает мне значения в диапазоне от 0 до 360, и мои базовые математические навыки крайне неудачны.(перемещая курсор по кольцу справа), я хочу, но даже после просмотра исходного кода я не могу точно воспроизвести его.

Что-нибудь, что укажет мне правильное направление, будетбыть оцененным.

1 Ответ

9 голосов
/ 10 июля 2011
// 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.

...