OpenGL超级圣经线性代数-这是正确的吗?
我最近开始阅读OpenGL Superbible第5版,并注意到以下几点: 刚学过线性代数,我觉得这很奇怪。列向量的维数为4x1,矩阵的维数为4x4,如何将它们相乘?如果向量是行向量,输出是行向量,我同意这是可能的,但这是什么OpenGL超级圣经线性代数-这是正确的吗?,opengl,linear-algebra,Opengl,Linear Algebra,我最近开始阅读OpenGL Superbible第5版,并注意到以下几点: 刚学过线性代数,我觉得这很奇怪。列向量的维数为4x1,矩阵的维数为4x4,如何将它们相乘?如果向量是行向量,输出是行向量,我同意这是可能的,但这是什么 更新:我给作者发了电子邮件,他说我是对的。他注意到前一版的书中的顺序是错误的,但在第五版中没有固定顺序。我同意:它应该是一个列向量,它被单位矩阵预先乘以 如果是行向量,则RHS也需要是行向量,以使尺寸匹配。这不是打字错误或错误,这是3D图形中表示向量矩阵乘法的常用方法。
更新:我给作者发了电子邮件,他说我是对的。他注意到前一版的书中的顺序是错误的,但在第五版中没有固定顺序。我同意:它应该是一个列向量,它被单位矩阵预先乘以
如果是行向量,则RHS也需要是行向量,以使尺寸匹配。这不是打字错误或错误,这是3D图形中表示向量矩阵乘法的常用方法。但从数学上讲,你是正确的:左向量应该水平书写。然而,在3D中,你将永远看不到这一点。通过本书所有与矩阵相关的示例,这是一个常见的错误。如清单4.1所示,标题是“Translate-then-Rotate”,而书上代码和可执行示例代码都显示了“Rotate-then-Translate”行为。唉。德国劳埃德船级社规范不一致。这在数学上是正确的。(更好的是,GL规范使用Mat x Col和Row x Mat,取决于您处理的是位置还是法线)。这是胡说八道。不能将1x4矩阵乘以4x4矩阵。这本书只是用了一个方便的快捷符号。我不知道你的意思。Mat x Col和Row x Mat是两种精细操作。通常,您可以将NxM和MxP矩阵相乘以生成NxP矩阵(请参阅)。这就是GL规范所做的(4x4 X 4x1=4x1,1x4 X 4x4=1x4)。我只是说4x1 X 4x4未定义:)+1个好点。太多的人忽视了这种数学上的不一致性。