2016-12-21 15 views
0

Я пытаюсь повернуть объект в 3d-точку с помощью OpenGL и glm. Для того, чтобы найти xRotation Я делаю это:Поворот объекта в сторону 3D-точки

xRotation=atan2(lookAtDiff.x,lookAtDiff.z) 

Где xRotation вокруг оси Y и lookAtDiff является vec3, что разница между положением объекта и то, что я пытаюсь сделать это лицом. Это работает безупречно. Поэтому я решил сделать yRotation (вращение вокруг оси X) таким же образом, делая это:

yRotation=atan2(lookAtDiff.y,lookAtDiff.x) 

Это дает мне неправильный поворот. Мой вопрос: почему я получаю неправильную ротацию от этого и как я могу это исправить?

ответ

0

Вы должны использовать диагональную:

yRotation = atan2(lookAtDiff.y, sqrt(lookAtDiff.x * lookAtDiff.x + lookAtDiff.z * lookAtDiff.z));