Как получить новый вектор направления камеры при перемещении произвольного относительного угла

Я реализую класс камеры и застреваю с некоторыми вещами

Предположим, что камера находится в точке (0,0,0) и смотрит в определенном направлении с соответствующими векторами ВВЕРХ и ВПРАВО.

У меня есть джойстик, который позволяет вам двигаться вперед-назад или менять ориентацию, перемещаясь (влево-вправо) или (вверх-вниз) в соответствии с вышеупомянутыми векторами.

Как я могу узнать, учитывая 3 вектора, который является результирующим вектором направления, если, например, я хочу переместиться на N градусов вправо??


person Jordi C.    schedule 03.06.2014    source источник


Ответы (1)


Если вы говорите о вращении камеры, вот как это делается: каждое вращение — это матрица, которая преобразует координаты, поэтому все, что вам нужно сделать, это вычислить матрицу вашего вращения, а затем применить ее к векторам Dir, Up и Right. вашей камеры, чтобы получить новые после поворота.

Вот небольшая литература о матрицах вращения (читайте раздел о трехмерных вращениях): http://mathworld.wolfram.com/RotationMatrix.html

person Sachamora    schedule 03.06.2014
comment
Спасибо! Я использовал только матрицу вращения, чтобы получить координаты объекта относительно камеры, но теперь все понятно. Не знаю, возможно ли, но, учитывая окончательную матрицу вращения (или просто вектор направления), можем ли мы получить азимут и угол места? - person Jordi C.; 04.06.2014
comment
Я нашел это. Теперь мне нужно только все закодировать, чтобы все заработало! - person Jordi C.; 04.06.2014