Я в основном получил свой угол вектора из двух точек:
Точка аа собирается в точку bb .... (Window.width = 800, Window.height = 600)
aa = (50.0*Window.width/100.0, 50.0*Window.height/100.0)
bb = (10.0*Window.width/100.0, 70.0*Window.height/100.0)
Angle = Vector(bb)-Vector(aa)
print(Angle)
[-320, 120]
Есть ли способ преобразовать вектор в одно число, представляющее угол ... например, 90,0, 45,0, 180 и т. Д.? Имейте в виду, мы идем от аа до бб .... под этим углом.
Еще один способ выразить это - я хочу преобразовать указанное выше значение "Угол" в одно число.
Здесь нет оси Z. Только 2d две точки аа и бб. Окно x-cord определяется слева направо, а 0 начинается слева.
Y-образный шнур Window определяется снизу вверх, а 0 начинается снизу.
Пытаясь быть более ясным здесь ...
Вектор aa подобен середине круга. Нулевая степень начнется с середины правого края круга, а движение против часовой стрелки будет увеличивать градусы, пока вы не нажмете 360, и вы вернетесь к среднему правому краю.
Векторная точка aa может двигаться, но независимо от ее положения в окне, я хочу вычислить угол между aa и точкой, в которой она движется (bb), где aa является центром круга, а градусы идут против часовой стрелки, как I объяснено выше.
Надеюсь, что проливает еще немного света.
Хорошо, я нашел функцию Python, которая работает, но не идеально.
def GetAngleOfLineBetweenTwoPoints(self, p1, p2):
xDiff = p2[0] - p1[0]
yDiff = p2[1] - p1[1]
return degrees(atan2(yDiff, xDiff))
Что происходит,
Я получаю правильную степень, но она в формате разделенного экрана, и под этим я подразумеваю то, что верхняя половина моего экрана, идущая справа налево, имеет положительный результат от 0 до 180. Нижняя половина моего экрана справа налево - от 0 до -180.
Видите, что там происходит?
Как я могу заставить эту функцию возвращать значение от 0 до 360, как целый круг вместо 0 до 180 +/-, как это происходит в настоящее время?