Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL超级圣经线性代数-这是正确的吗?_Opengl_Linear Algebra - Fatal编程技术网

OpenGL超级圣经线性代数-这是正确的吗?

OpenGL超级圣经线性代数-这是正确的吗?,opengl,linear-algebra,Opengl,Linear Algebra,我最近开始阅读OpenGL Superbible第5版,并注意到以下几点: 刚学过线性代数,我觉得这很奇怪。列向量的维数为4x1,矩阵的维数为4x4,如何将它们相乘?如果向量是行向量,输出是行向量,我同意这是可能的,但这是什么 更新:我给作者发了电子邮件,他说我是对的。他注意到前一版的书中的顺序是错误的,但在第五版中没有固定顺序。我同意:它应该是一个列向量,它被单位矩阵预先乘以 如果是行向量,则RHS也需要是行向量,以使尺寸匹配。这不是打字错误或错误,这是3D图形中表示向量矩阵乘法的常用方法。

我最近开始阅读OpenGL Superbible第5版,并注意到以下几点:

刚学过线性代数,我觉得这很奇怪。列向量的维数为4x1,矩阵的维数为4x4,如何将它们相乘?如果向量是行向量,输出是行向量,我同意这是可能的,但这是什么


更新:我给作者发了电子邮件,他说我是对的。他注意到前一版的书中的顺序是错误的,但在第五版中没有固定顺序。

我同意:它应该是一个列向量,它被单位矩阵预先乘以


如果是行向量,则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个好点。太多的人忽视了这种数学上的不一致性。