вектор перемещения камеры-отношение к матрице вращения


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

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

2 ответа:

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

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

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

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

С = - Р-1t

И кстати,

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

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

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

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