Рассчитать угол, включая углы отражения между двумя векторами - PullRequest
1 голос
/ 17 марта 2011

Мне нужно рассчитать угол между двумя векторами.Векторы могут указывать в любом направлении и были нормализованы.Я хочу, чтобы угол измерялся по часовой стрелке от вектора A к вектору B в некоторых случаях и против часовой стрелки от вектора A к вектору B в других случаях (другими словами, я не просто хочу знать наименьший угол).

Вотчто у меня есть

if (clockwise) angle = Math.atan2(vectorA.y, vectorA.x) - Math.atan2(vectorB.y, vectorB.x);
else angle =  -1*(Math.atan2(vectorA.y, -vectorA.x) - Math.atan2(vectorB.y, -vectorB.x));

Я думаю, это никогда не сработает для углов отражения?Так как мне рассчитать угол в диапазоне 0-> 2pi?

1 Ответ

0 голосов
/ 17 марта 2011

Рассчитайте его последовательно для направления по часовой стрелке и вычтите из 360 (или 2 * пи), когда вам это нужно против часовой стрелки.

Если вам нужно нормализовать до определенного диапазона градусов, то вы можете сделать этонепосредственно нормализуя вывод вашего кода.Поэтому рассчитайте угол по часовой стрелке, затем добавьте 2 * пи, пока он не станет выше нуля, затем возьмите результат mod 2 * пи, и вы получите результат в диапазоне [0, 2 * пи).

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