вектор трансляции камеры - отношение к матрице вращения - PullRequest
6 голосов
/ 08 марта 2010

Я работаю с некоторым кодом, который выводит матрицу вращения 3x3 и вектор перевода, представляющий ориентацию и местоположение камеры.

Однако в документации говорится, что для определения местоположения камеры необходимо умножить транспонированную и инвертированную матрицу вращения на вектор трансляции. Значит ли это, что исходный вектор не является местоположением камеры? Если нет, то что представляет этот исходный вектор?

Ответы [ 2 ]

8 голосов
/ 09 марта 2010

Я предполагаю, что R (матрица вращения) и t (вектор перевода), которые вы получили, были мировой системой координат с (0,0,0) в качестве источника.

С помощью R и t теперь вы можете перемещать точку из мировой системы координат ( WC ) в систему координат камеры ( CC *). 1015 *), то есть X c = RX + t , где X - трехмерная точка в WC и X c - X в CC (то есть, если смотреть с точки зрения камеры). Это применимо, если мы имеем дело с твердыми телами, поэтому мы просто поворачиваем точку, а затем переводим ее.

Теперь вам нужно найти координаты центра камеры, которая является источником CC , или когда X c = 0 :

0 = RC + t , где C - трехмерные координаты центра камеры в WC . Решая для C , мы получаем,

C = -R -1 t

И, кстати,

Исправление в вашей документации

Транспонирование и умножение матрицы вращения не меняет матрицу вращения - матрица вращения ортогональна, что означает , что ее транспонирование равно ее обратному и, следовательно, (R T ) -1 = R .

0 голосов
/ 08 марта 2010

Исходным вектором в этом случае, вероятно, является вектор перевода в координатах после перевода. Или, может быть, раньше - все зависит от вашей личной точки зрения.

Дело в том, что у вас есть две системы координат, и каждый вектор может быть представлен в каждой из систем координат. Матрица вращения позволяет вам преобразовывать вещи из одной системы в другую. «Умножьте транспонированную и инвертированную матрицу вращения на» - это обратное преобразование.

...