Найти угол треугольника, зная координаты 2 вершин, угол при одной вершине, длинны сторон, противолежащих углам?
Задача: есть две движущиеся точки с известными координатами, вектор скорости одной известен, у другой известен только модуль скорости. Нужно найти, на какой угол нужно повернуть вектор скорости, у которого известен только модуль. В заголовке, переформулированная задача, которую я пытаюсь решить на python:
def angle_between(v1: Vector2, v2: Vector2) -> float:
a = angle_of(v1) # Абсолютный угол (0-359)
b = angle_of(v2)
c = abs(a - b)
return c if c <= 180 else c - 360
def velocity_angle(p1: Vector2, p2: Vector2, v1: Vector2, v2: Vector2) -> float:
beta = angle_between(p1 - p2, v2) # Известный угол
alpha = degrees(asin((sin(beta) * v2.length()) / v1.length())) # Нахожу угол по теореме синусов
return alpha
При визуализации на pygame я вижу, пока известный вектор с углом beta постепенно поворачивается, вектор с найденным углом alpha виляет туда-сюда. Когда решаю задачу на бумаге - все работает, пути точек пересекаются правильно, а код не работает. Всё не могу понять почему.
Ответы (1 шт):
Вы получаете бета в градусах, а для вычисления синуса нужно перевести его в радианы.
А верна ли вся логика, сказать трудно, хорошо бы увидеть чертежик.