2016-10-19 1 views
-3

Я хочу преобразовать vector(0,0,0) в новую точку с матрицей преобразования, но если вы сделаете преобразование [matrix * v], вы получите в vector(0,0,0) каждый раз. Я думаю, что есть дополнительный шаг, который мне нужно сделать для этого, чтобы он работал.как преобразовать точку в начале координат с матрицей преобразования

ответ

1

Преобразование 3D-вектора с нулевым вектором с матрицей 3x3 всегда будет приводить к нулевому вектору, потому что матрицы 3x3 могут представлять только линейные преобразования. Но переводы не являются линейными. Поэтому вам необходимо использовать однородные координаты и матрицу 4x4. Если у вас есть матрица перевода 4x4, вам нужно добавить 1 в качестве четвертого измерения в вектор, поэтому он получит (0, 0, 0, 1) и преобразует это с помощью вашей матрицы. Если матрица - это просто перевод (или вообще аффинное преобразование), вам просто нужно отрезать четвертое измерение, чтобы получить конечный 3D-вектор.

Смежные вопросы