Как найти наименьший переход между двумя углами - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть программа Java, в которой один объект должен вращаться к другому объекту. Для этого я рассчитываю углы двух векторов, а затем разницу между ними. Теперь мне нужно выяснить, какой будет самый маленький переход между ними. Например, если угол первого вектора -179 ° и угол ко второму вектору равен 179 °, наименьший угол поворота будет равен 2 °, и вращение не обязательно должно быть полным круговым вращением: -179 ° -2 ° = - 181 ° = 179. Я надеюсь, что объяснение в порядке. Так как я могу легко рассчитать это в Java? У меня в голове небольшая шутка и я не могу понять это.

Редактировать: углы в радианах

angle_Knight = atan2(knightNode.getLocalTranslation().y,knightNode.getLocalTranslation().x));
angle_follow = atan2(followKnight.getLocalTranslation().y,followKnight.getLocalTranslation().x));
angle = angle_follow - angle_Knight;

Спасибо

1 Ответ

1 голос
/ 07 апреля 2020

Ты почти у цели. Просто добавьте или вычтите полный оборот (360 градусов или 2pi радианы), когда угол, полученный в результате угла, находится вне диапазона (-pi, pi).

angle = angle_follow - angle_Knight;
if (angle < -Math.PI) {
    angle = angle + 2*Math.PI;
} else if (angle > Math.PI) {
    angle = angle - 2*Math.PI;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...