Как преобразовать матрицу 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
Другие вопросы по тегам