Страхувам се, че изпитвам Gimbal lock
, когато се опитвам да внедря камера от първо лице в OpenGl.
rotateFPS_OY(float angle){
forward = forward * cos(angle) + right * sin(angle);
right = forward.CrossProduct(up);
}
rotateFPS_OX(float angle){
up = up * cos(angle) + forward * sin(angle);
forward = up.CrossProduct(right);
}
По-късно се обаждам на gluLookAt:
Vector3D center = position + forward;
gluLookAt(position.x, position.y, position.z,
center.x, center.y, center.z,
up.x, up.y, up.z);
Когато тествате това, изглежда, че след няколко движения камерата се търкаля (променя десния вектор). Изчисленията изглеждат правилни, просто не мога да кажа какво не е наред.