У меня есть куб в открытом GL. У меня есть куб, вращающийся путем умножения на матрицу вращения. У меня также есть камера, вращающаяся вокруг куба по оси x, используя gluLookAt, как вы можете видеть ниже.
case 'j':
eyeX = 10*cos(angle);
eyeZ = 10*sin(angle);
centerX = -cos(angle);
centerZ = -sin(angle);
angle -= 0.1;
break;
case'l':
eyeX = 10*cos(angle);
eyeZ = 10*sin(angle);
centerX = -cos(angle);
centerZ = -sin(angle);
angle += 0.1;
break;
где
gluLookAt( eyeX, eyeY, eyeZ, centerX, centerY, centerZ, 0.0, 1.0, 0.0);
Я борюсь с тем, чтобы камера вращалась выше и ниже куба, обводя его по оси Y.
Чтобы камера вращалась вокруг объекта
вычесть объект мира поз. с камеры мира поз.,
cam_pos_os = cam_pos_ws — object_pos_ws
поверните вектор, указывая на cam_pos_os, как вы делаете это в мировом пространстве в вашем коде
добавить объект мира поз. снова к камере поз. в объектном пространстве,
cam_pos_ws = cam_pos_os + object_pos_ws
Других решений пока нет …