Найти Градусы (0-360º) точки на окружности

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

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

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

мой основной круг можно перетаскивать в любом месте на холсте. Я знаю, это ... радиус (r) и где 12 часов (p0) всегда будут (cx, cy - r). Что? Мне нужно знать, какая степень p1 будет (0-360º), чтобы я мог вращаться этот содержание основного круга соответственно с Рафаэлем.вращать.)(

Я пробежал через кучу различных формулировок JavaScript, чтобы найти это (пример), но никто, похоже, не дает мне значений между 0-360 и моими основными математическими навыками прискорбно неполноценны.

на выбор цвета демо (скольжение курсора вдоль кольца справа) имеет поведение, которое я хочу, но даже после изучения исходного кода я не могу его воспроизвести точно.

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

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 для получения более подробной информации.