首页 > 解决方案 > 我可以总是假设一个角值 !=1 的 mvp 矩阵正在执行缩放吗?

问题描述

假设我有一个模型视图投影矩阵,mvp我知道mvp[3][3] !=1并且mvp[3][3] > 0

我是否可以假设模型矩阵执行了缩放,或者由于投影矩阵本身执行缩放,所以如果没有原始矩阵,这个数字就没有用了吗?

标签: algorithmmathmatrixgraphicsmatrix-multiplication

解决方案


不,仅此值并不能告诉您太多信息。考虑如下对角矩阵:

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 是 Robert 在评论中提到的一种选择)。


推荐阅读