4.1 坐标系的重要性
在计算机图形学中,我们同时记录许多不同的坐标系。例如,我们也许对场景中的每一个物体都有一个不同的坐标系与之相关联。我们如何使用和组织这些坐标系的细节在第 5 章中描述。因为有如此多的坐标系,当使用矩阵来定义变换时,我们需要非常小心。
假设我们指定一个点和一个变换矩阵;这并不能完全表示实际的映射。我们必须也指定我们所使用的坐标系。这里有一个简单的例子。假设我们开始于某一点p~以及矩阵
S=2000010000100001
现在我们来确定一个坐标系ft。有了这个向量基,我们想要表示的点可以由对应合适的坐标系向量表示为p~=ftc。如果我们现在使用上面的矩阵来变换该点,如同第 3 章中描述的,我们得到ftc⇒ftSc。在这个情况下,该矩阵的作用是从坐标系ft的原点开始,用缩放系数 2 来变换该点,缩放方向为ft的第一个轴向(x)。
假设我们重新选择另一个坐标系at,并且假设这个坐标系与原先的坐标系通过矩阵可以建立相关关系at=ftA。我们可以用一个新的坐标系向量在新的坐标系内表示原点p~=ftc=atd,其中d=A−1c。
现在如果我们使用S来对相关于at的点进行变换,我们得到atd⇒atSd。此时,我们对同一个点p~进行了缩放,但这一次,它是从at的原点,沿着at的第一个轴向(x)进行缩放。它是一个与之前不同的变换(图4.1)。图 4.2 展示了当使用一个固定的矩阵R旋转一个点时遇到同样对坐标系的依赖性。
在这里需要关注的重点是,对点的变换(在本例中是非均匀缩放)在表达式中与变换矩阵左侧的首先出现的坐标系相关。因此我们称之为左侧原则(left-of-rule)。我们将
我们可以对坐标系本身的变换也应用同样的逻辑。我们将
4.1.1 使用辅助坐标系进行变换
变换后的矩阵可以被表示为
\begin{eqnarray} &&\vec{\mathbf{f}}^t \\ &=& \vec{\mathbf{a}}^tA^{-1} \\ &\Rightarrow& \vec{\mathbf{a}}^tMA^{-1} \notag\\ &=& \vec{\mathbf{f}}^tAMA^{-1} \end{eqnarray} \tag{4.1}
4.2 多重变换
我们现在可以解释以下变换:
我们将变换分解为两步来看,在第一步中,
在第二步中,
或者相等的
我们也可以将整体变换解释为另一种有效的方式。将旋转和位移以另一种顺序来应用。在第一步中,
这些类型的解释常常总结如下:如果我们从左到右解读变换,那么每个变化都相关于一个新产生的"局部"坐标系。如果我们从右向左解读,那么每个变化都相关于原始的"全局"坐标系。
练习
4.4 给定以下 3 个坐标系
图 4.1: 缩放矩阵S将点p~相关于两个不同的坐标系下缩放。得到了两个不同的结果。
图 4.2: 旋转矩阵R将点p~相关于两个不同的坐标系下缩放。得到了两个不同的结果。
p~=ftc⇒ftSc
读作"p~由S相关于ft进行变换。"我们将
p~=atA−1c⇒atSA−1c
读作"p~由S相关于at进行变换"。
ft⇒ftS
读作"ft由S相关于ft进行变换。"我们将
ft=atA−1⇒atSA−1
读作"ft由S相关于at进行变换"。
在很多种情况下,我们希望相关于某一辅助坐标系at,以矩阵M表示的特定方式将一个坐标系ft进行变换。例如,我们或许会使用某一坐标系来对地球进行建模,而后我们希望将地球沿着太阳的坐标系来旋转。
这很容易做到,只要我们知道f与at之间相关的矩阵关系。例如,我们或许知道
at=ftA
在等式(4.1)的第一行,我们用at重写了ft。在下一行,我们使用左侧原则对坐标系系统进行了变换;使用了相关于at的矩阵M。在最后一行,我们简单的重写了表达式,移除了辅助坐标系。
我们可以使用左侧原则来解释一系列多重变换。在这里强调,回想一下,通常,矩阵相乘是不满足互易性的。在随后的 2D 例子中,R为一个旋转矩阵而T是一个位移矩阵,其中位移矩阵的作用是沿着第一个轴向位移一个单位,而旋转矩阵的作用是沿着坐标系的原点(图4.3)旋转θ角度。
图 4.3: 两种解释表达式ftTR的方法
ft⇒ftTR
ft⇒ftT=f′t
它可以被解释为:ft被相关于ft的T变换,我们将结果称为坐标系f′t。
ftT⇒ftTR,
f′t⇒f′tR
它可以被解释为:f′t被相关于f′t的R变换。
ft⇒ftR=f∘t,
ft被相关于ft的R变换,我们将结果称为坐标系f∘t。在第二步中,
ftR⇒ftTR,
f∘t被相关于ft的T变换。
这些是对最终整体变换的两种不同的解释。(1)相关于ft位移,之后再相关于一个中介坐标系旋转。(2)相关于ft旋转,再沿着原始的ft位移。有时,使用第一种解释更方便,而有时更适合使用第二种。
4.1 使用4.2节中的定义,画出两种不同的草图来表达变换:ft⇒ftRT(与图 4.3 比较)。
4.2 假设ft是一个正交坐标系,并且我们进行变换ft⇒ftST,其中S是一个以系数 2 进行均匀缩放的矩阵,而T沿着x轴位移 1。以ft的原始单位来衡量,则坐标系的远点移动了多远?
4.3 给定两个正交坐标系at和bt
距离由正数di表示。怎样的矩阵R和T可以得到bt=atTR?怎样的矩阵R和T可以得到bt=atRT?(注意:不要使用矩阵T的三角变换。)
假设bt=atN且ct=atM。只用N和θ来表示矩阵M。