![]() |
1
6
3x 3矩阵可以编码诸如旋转和反射之类的转换,但不能编码转换。为此,需要添加第四个元素,并用 homogenous coordinates . 为了某些目的,可以使用非方形矩阵,但是如果您想以任何顺序组合它们,它们应该是方形的(因为如果第一个矩阵中的列数等于第二个矩阵中的行数,则只能将两个矩阵相乘)。 因此,为了您的目的,您应该使用4x4矩阵和4元素同质向量,添加第四个 W 与值1协调。 将一个变换应用到一组向量上只是一个乘法问题。 传统上,向量表示为 columns 矩阵在左边。你在上面把它们表示为 rows 在右边乘。两者都是有效的,但是转换矩阵需要在两种情况之间进行转置。您显示的矩阵底部有翻译值,这与您的乘法顺序是正确的。 向量转换后,需要除以 W 坐标与比例 x,y 和 Z 回到传统的3空间。 在C-ISH伪代码中,使用行向量约定:
转换序列可以通过将每个矩阵依次相乘而组成。注意,矩阵乘法是 非交换的 ,所以乘法的顺序很重要。反过来,这意味着无论您是在左边乘以行向量还是在右边乘以列向量都很重要。如果你乘法 一 X 乙 X C ,然后使用与执行转换相同的列向量 C 首先,然后 乙 然后最后 一 . 对于行向量,它是 一 首先,然后 乙 然后 C . 因此,在构造、组成和应用转换时,保持所有内容的一致性是很重要的。
同样,在伪代码中应该与
|
![]() |
AstralHex · 矩阵乘法代码工作不正常 4 月前 |
![]() |
Max · 用两列中的特定值对识别R中的数据帧行 6 月前 |
![]() |
RobertF · 如何将函数应用于矩阵的每个元素? 7 月前 |
![]() |
Landers · 将矩阵转换为包含所有值的列表 10 月前 |
![]() |
P_B · 如何从矩阵中减去均值向量 11 月前 |
![]() |
Rotacional · 获取矩阵中的方向元素 11 月前 |
![]() |
ImRobb · 为什么int**m不等于int m[][]?[关闭] 11 月前 |