矩阵乘法顺序PVM与图形编程中的MVP



嗨,我想知道为什么大多数教程和编程代码都使用MVP来描述模型视图预测矩阵。而不是PVM,这是代码中实施的实际顺序:

mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix;
gl_Position = MVP * VertexInModelSpace;

写下PVM而不是MVP对我来说似乎更容易理解。

矩阵实际上没有固定的含义,只是行与列之间的关系。开发人员可以自由定义含义。MVP顺序遵循标准数学惯例。但是,由于没有什么可以说,您不能将向量定义为列,而不是排,没有什么可以阻止此顺序。

澄清:因为更改符号会转移含义。然后遵循:

m mvp t = m pvm

由于矩阵乘法的定义,以下规则启动了:

(ab) t = b t a t

由于b可以递归地是另一个矩阵乘法。这本质上意味着您已通过更改表示法交换了乘法顺序。

有点像从外部看问题或内部问题。在这种情况下,您作为外部观察者的思考。而围绕链中第一个操作员的角度观察事物的另一种方式。我个人认为您使用的符号可能对这项特定任务更直观,而另一个更为普遍。主要是由于我见过的所有数学书籍都使用了此公约,所以要怪数学家。

更好地坚持更常见的方式,使事情变得更加普遍。例如:没有什么可以阻止我在芬兰语中键入答案,但是stackoverflow的惯例是用英语回答,使大多数用户更容易理解答案。使用更常见的形式,因为其他形式可能无法掌握差异,这会导致错误。

另一个问题是矩阵乘法不一定是交换的:

AB != BA

所以坚持惯例是一个好主意。

最新更新