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