Могу ли я всегда предполагать, что матрица mvp со значением угла! = 1 выполняет масштабирование? - PullRequest
0 голосов
/ 12 октября 2018

Предположим, у меня есть матрица проекции вида модели, mvp, и я знаю, что mvp[3][3] !=1 и mvp[3][3] > 0

Можно ли предположить, что матрица модели выполнила масштабирование или поскольку сама матрица проекции выполняет масштабирование этогономер бесполезен без оригинальных матриц?

1 Ответ

0 голосов
/ 13 октября 2018

Нет, само по себе это значение мало о чем говорит.Рассмотрим диагональную матрицу, подобную следующей:

d  0  0  0
0  d  0  0
0  0  d  0
0  0  0  d

d - произвольное число.

Эта матрица, по сути, является однородным эквивалентом единичной матрицы и не выполняет никаких преобразований вообще.,Равномерная масштабирующая часть в верхнем левом блоке 3x3 исключается делением перспективы.Вы всегда можете умножить матрицу на обратную запись m33, чтобы несколько нормализовать ее (это сохранит преобразование).Для приведенной выше матрицы вы получите:

1  0  0  0
0  1  0  0
0  0  1  0
0  0  0  1

И в этой форме вы легко сможете увидеть, что это тождество.Кроме того, вы можете проверить верхний левый блок 3x3, чтобы выяснить, есть ли масштабирование (в зависимости от вашего определения масштабирования вычисление определителя блока 3x3 и проверка на 1 - это один из вариантов, как Роберт упоминал в комментариях).

...