вектор перемещения камеры-отношение к матрице вращения
Я работаю с некоторым кодом, который выводит матрицу вращения 3x3 и вектор трансляции, представляющий ориентацию и местоположение камер.
Однако в документации говорится, что для получения местоположения камеры необходимо умножить транспонированную и инвертированную матрицу вращения на вектор перемещения. Означает ли это, что исходный вектор не является местоположением камеры? Если нет, то что представляет собой этот исходный вектор?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 .
Исходный вектор в этом случае, вероятно, является вектором перевода в координатах после перевода. А может быть и раньше - все зависит от вашей личной точки зрения.
Дело в том, что у вас есть две системы координат, и каждый вектор может быть представлен в каждой из систем координат. Матрица вращения позволяет вам преобразовывать вещи из одной системы в другую. "Умножить транспонированную и перевернутую матрицу вращения на" - это обратная трансформация.