0

我有这张照片,我需要从右边的位置到左边的位置:在此处输入图像描述

好吧,在 OpenGL 中很简单,

    glTranslated(6,0,0);
    glRotated(30, 0, 0, 1);
    glScaled(2, 2, 0);

但我试图了解它在“幕后”的实际运作方式。我要说一点,比如说左下角,然后从那里开始工作吗?

例如:

v1 = (0,1,0,1) 并且第一个矩阵是平移矩阵,所以我将它乘以 x = 6,y = 0,z = 0 的平移矩阵。得到一个新点,即 v2 = ( 6,1,0,1) 并从那里继续使用比例和旋转矩阵?

问题:我需要这样做的同质矩阵是什么?

我想它只是按该顺序乘以 TRS 矩阵,它会产生我需要的矩阵..

4

2 回答 2

1

矩阵乘法不可交换。这是一种奇特的说法,即平移后旋转与旋转后平移不同。如果你通过一个例子来工作,你很快就会明白这一点。

现在您可以使用两种约定,预乘或后乘。大多数图形系统使用不太直观的约定,因此最后应用的操作实际上是最先应用的。这样可以更轻松地处理在层次结构中向上平移的层次结构系统,您不想将其输入到旋转中,从而产生大的曲轴移动。这确实使得在手动编写一系列操作时弄清楚会发生什么变得更加困难。向后工作,最后应用旋转是一般规则。

于 2017-05-23T18:50:07.227 回答
1

马尔科姆麦克莱恩说的是真的。我只是想我会提到 TRS您需要的矩阵,只是您需要先将矩阵相乘,然后再将它们应用于顶点,例如 TRS*v,这与执行 S*(R*(T* v)),这就是您所说的通过平移,然后旋转,然后缩放一个点来进行的操作。TLDR;组合成单个矩阵的变换以它们相乘的相反顺序应用。例如 TRS*v => 缩放、旋转,然后平移 v。

于 2017-05-23T19:51:27.300 回答