Как преобразовать матрицу 2D-преобразования (для однородных координат) в 3D в плоскости z=0?
У меня есть матрица преобразования 3x3 для двумерных однородных координат:
a b c
d e f
g h i
Я хотел бы передать это в OpenGL (используя glMultMatrix
) в 2D-приложении, но OpenGL использует матрицы 4x4 для трехмерных однородных координат. Я хотел бы, чтобы все координаты, преобразованные моей матрицей 4x4, заканчивались на x
а также y
так же, как для матрицы 3х3 и с z=0
,
Я пытался решить это. Для вектора x, y, 1
Я бы в конечном итоге с преобразованным вектором ax + by + c, dx + ey + f, gx + hy + i
так что это значит для вектора x, y, 0, 1
Я хотел бы в конечном итоге с преобразованным вектором ax + by + c, dx + ey + f, 0, ?
, Одна матрица, которая могла бы сделать это (насколько я могу судить):
a b 0 c
d e 0 f
0 0 1 0
0 0 0 1
Это правильно? Это работает? Я не думаю, что это единственная матрица, которая даст нужный мне результат, но я не совсем понимаю, что должно или не должно идти в третьей и четвертой строках (и четвертой колонке).
1 ответ
Если вы хотите, чтобы координата z была 0
Вы должны пройти нулевой ряд. Также включите перспективную часть в последний ряд:
a b 0 c
d e 0 f
0 0 0 0
g h 0 i