矩阵乘法逆向应用是什么意思?

问题描述 投票:0回答:1

我不明白这一点,这是来自 https://learnopengl.com/Getting-started/Transformations 教程,它解释了在代码中我们首先翻译然后旋转,但旋转实际上首先发生?但我不明白这一点......我们有一个矩阵,我们填充它,使得矩阵乘法将导致我们想要的旋转/平移/缩放,但是其中一个首先发生是没有意义的,因为所有矩阵与顶点着色器中的位置向量相乘,并且它同时发生,我认为这是使用矩阵的确切点和主要优势?

首先应用平移然后旋转以获得所需的结果可能是正确的,但是我们首先旋转然后平移的整个想法没有意义......不,我们首先平移然后旋转,因为例如也许我们想先旋转然后平移,但为了最终得到正确的矩阵,我们需要先平移然后旋转,但显然我们首先用平移然后用旋转改变矩阵,所以我不明白它是如何实现的可以反过来吗?

我知道解释困难的主题很困难,这并不是要批评教程,只是我对此非常好奇并且对此非常恼火。我知道它可能非常复杂,但我认为必须有一个简单的解释来解释发生的情况而不需要深入,例如仅解释函数如何工作或矩阵如何生成或它的含义无需了解其背后的所有数学知识。并不是说我介意理解它,但我想这比仅仅通过它所说的来解释教程的含义要深入得多。

练习1最终的解是这样的: https://learnopengl.com/code_viewer_gh.php?code=src/1.getting_started/5.2.transformations_exercise1/transformations_exercise1.cpp 我根本不明白他们的解释。

opengl matrix-multiplication coordinate-transformation
1个回答
0
投票

虽然我们习惯从左到右进行运算,但对于矩阵来说,通常是从左到右进行运算。我不记得其中的历史原因了。

考虑一个旋转矩阵 M_R,一个平移矩阵 M_T,V 是我们正在变换的向量。一次应用一个变换,您会看到它像这样发生:

  • M_T * M_R * V
  • M_T * V_旋转
  • V_rotated_then_translated

您仍然可以先计算 M_T * M_R,但由于结合性确实适用于矩阵乘法,因此它不会影响结果:

  • (M_T * M_R) * V
  • M_旋转_然后_平移 * V
  • V_rotated_then_translated
© www.soinside.com 2019 - 2024. All rights reserved.