Я бы использовал двойное определение точечного произведения , чтобы вычислить это, когда вы пропускаете неприятную точку того, что происходит на вертикальных линиях, и имеете дело с квадрантами
(Проститемоя запись математики не очень хорошо работает в уценке ...)
Где A
и B
- это двухмерные векторы с x
и y
компонентами, а theta
- этоугол между ними:
dot(A, B) = ax * bx + ay * by
и
dot(A, B) = |A| * |B| * cos(theta)
... где |A|
- длина A
, которую можно вычислить с помощью Теорема Пифагора :
|A| = sqrt(ax^2 + ay^2)
Следовательно:
theta = acos((ax * bx + ay * by) / (|A| * |B|))