Я пишу класс камеры для OpenGL, который использует кватернионы и угловую ось. Мне удалось создать функцию для горизонтального вращения (это было легко), но я не могу написать рабочую функцию для ее вертикального вращения. Все мои попытки заканчиваются вращением камеры, черт знает, в каких направлениях ... Мне нужна формула или код, как для моей функции вертикального вращения ( pitchTurn () в моем коде).
Here is my current code:
void Camera::yawTurn(const float& angle){
rotate(angle, 0.0f, 1.0f, 0.0f);
}
void Camera::pitchTurn(const float& angle){
// need code here
}
void Camera::rotate(const float& angle, const float& x, const float& y, const float& z){
Quaternionf t;
t.fromAxisAngle(angle, x, y, z);
q_ *= t;
q_.normalize();
}
Мне также интересно, есть ли лучший способ использовать кватернион для вращений без использования оси-оси.