ОК, похоже, вам нужно движение камеры в стиле Doom, т.е. никаких поворотов вверх-вниз.Примите во внимание следующее:
- Вам необходимо визуализировать «мир», видимый через камеру.
- Предполагая, что положительный x направо, а положительный y - перед, когда камераперемещается вправо, изображение мира перемещается влево.
- Когда камера поворачивается положительно влево, изображение мира поворачивается вправо.
Теперь давайте попробуем построитьУравнения:
1. Во-первых, переведите мировые координаты в положение камеры:
Xwt = Xw - Xc;
Ywt = Yw - Yc;
Zwt = Zw;
(Xc,Yc,Zc) = camera position
(Xw,Yw,Zw) = world coordinates of object in the scene
(Xwt,Ywt,Zwt) = world coordinates of object translated to camera position
2. Теперь поверните переведенные координаты на угол, противоположный повороту камеры:
Xwc = Xwt * Cos(psi) + Ywt * Sin(psi);
Ywc = -Xwt * Sin(psi) + Ywt * Cos(psi);
Zwc = Zwt
Psi = angle of camera rotation
(Xwc,Ywc,Zwc) = world coordinates of object transformed to camera orientation
Вы можете объединить два шага и преобразовать их в матричную форму.