Как получить градусы по кругу для каждой точки - PullRequest
0 голосов
/ 25 марта 2019

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

Я пытаюсь определить расстояние между ними в градусах.

Надеемся, что приведенная ниже модель поможет вам лучше понять.

Вот диаграмма данных

enter image description here

def get_angle(x, y):
    #75 being the center circle coordinate
    (dx, dy) = (75-x, y-75)
    angle = degrees(atan2(float(dy), float(dx)))
    if angle < 0:
        angle += 180

    return angle

Возвращаемые значения не кажутся правильными, так как по некоторым причинам они очень похожи.Такие как 157 и 120, хотя это явно не должно возвращать это.Я немного новичок в обработке изображений, поэтому могу ошибаться.

1 Ответ

0 голосов
/ 25 марта 2019

Координаты центра: cx, cy
Координаты точки: ax, ay для точки A и bc, by для точки B
Псевдокод для угла:

 dp = dot(A-C, B-C) = (ax-cx)*(bx-cx) + (ay-cy)*(by-cy)
 cross = vectorproduct(A-C, B-C) = (ax-cx)*(by-cy) - (ay-cy)*(bx-cx)
 angle = degrees(atan2(cross, dp))
 if angle < 0:
      angle += 180

Если направление угла не соответствует ожидаемому, измените знак креста

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...