二维复合变换
利用矩阵表达式,可以通过计算单个变换的矩阵乘积,将任意的变换序列组成复合变换矩阵(compsite transformation matrix)。形成变换矩阵的乘积经常称为矩阵的合并(concatenation)或复合(compsistion)。由于一个坐标位置用齐次列矩阵表示,我们必须用表达任一变换次序的矩阵前乘该列矩阵。由于场景中许多位置用相同的顺序变换,先将所有变换矩阵相乘形成一个复合矩阵将是高效率的方法。因此,如果我们要对点位置P经行两次变换,变换后的位置将用下式计算:
该坐标位置使用矩阵M来变换,而不是单独地先用M1然后M2来变换。
4.1 复合二维平移
假如将两个连续的平移向量( t1x, t1y)和( t2x, t2y)用于坐标位置 P,那么最后的变换位置 P'可以计算为
其中,
P和
P’表示为三元素,齐次坐标的列表向量。我们可以计算两个相关的矩阵乘积来检验这个结果。同样,这个平移序列的复合变换矩阵为:
或:
这表示两个连续平移是相加的。
4.2 复合二维旋转
应用于P的两个连续旋转产生的变换为:
通过两个旋转矩阵相乘,我们可以证明两个连续旋转是相加的
因此,点旋转的最后坐标可以使用复合变换矩阵计算为:
4.3复合二维缩放
合并两个连续的二维缩放操作的变换矩阵,生成如下的复合缩放矩阵:
或
这种情况下的结果矩阵表明,连续缩放操作是相乘的,假如我们要连续两次将对象尺寸放大3倍,那么其最后的尺寸将是原来尺寸的9倍。
4.4通用二维基准点旋转
当图形软件包仅提供绕坐标系原点旋转函数时,我们可通过完成下列 平移-旋转-平移操作序列来实现绕任何选定的 基准点( xr, yr)的旋转。
1.平移对象使基准点位置移动到坐标原点;
2.绕坐标原点旋转;
3.平移对象使基准点回到其原始位置
这个变换序列如图所示。利用矩阵合并可以得到该序列的复合变换矩阵方程1:
可以使用下列形式表示:
其中, T(-x r ,-y r )= T -1 (x r ,y r ) 。通常,可以将图形库中的旋转函数设计成先接收基准点坐标参数及旋转角,然后自动生成方程1的旋转矩阵。
4.5 通用二维基准点缩放
只有相对于坐标原点缩放的缩放函数时,下图中给出了关于任意选择的基准位置( x∫,y∫ )缩放的变换序列:
1.平移对象使
2.对于坐标原点经行缩放;
3.使用步骤1的反向平移将对象返回到原始位置。
将这三个操作的矩阵合并,就可以产生所需的缩放矩阵:
或:
该变换在提供接收基准点坐标的缩放函数的系统中自动生成。
4.6 通用二维定向缩放
参数 Sx 和 Sy 沿x和y方向缩放对象,可以通过在应用缩放变换之前,将对象所希望的缩放方向旋转到与坐标一致而在其他方向上缩放对象。假如我们要在下图所示的方向上使用参数S1和S2指定的值作为缩放系数。为了完成这种缩放而不改变对象方向,我们首先完成旋转操作,使 s1 和 s2 的方向分别与x和y轴重合。然后应用缩放变换S( s1, s2 ),再经行反向旋转以回到其原始位置。从这三个变换的乘积得到的复合矩阵2为:
作为缩放变换的一个例子,通过沿(0,0)到(1, 1)的对角线将单位正方形拉长,使其转换成平行四边形(参见下图 )。我们使用参数θ= 45度将对角线旋转到y轴,并按s1 = 1和s2 = 2将其长度加倍,然后再旋转使对角线回到原来的位置。
在复合矩阵2,假设缩放是相对原点完成的,可以将这个缩放操作推进一步并与平移操作合并,从而使复合矩阵包含为指定的固定位置进行缩放的参数。
利用矩阵表达式,可以通过计算单个变换的矩阵乘积,将任意的变换序列组成复合变换矩阵(compsite transformation matrix)。形成变换矩阵的乘积经常称为矩阵的合并(concatenation)或复合(compsistion)。由于一个坐标位置用齐次列矩阵表示,我们必须用表达任一变换次序的矩阵前乘该列矩阵。由于场景中许多位置用相同的顺序变换,先将所有变换矩阵相乘形成一个复合矩阵将是高效率的方法。因此,如果我们要对点位置P经行两次变换,变换后的位置将用下式计算:
4.1 复合二维平移
假如将两个连续的平移向量( t1x, t1y)和( t2x, t2y)用于坐标位置 P,那么最后的变换位置 P'可以计算为
或:
4.2 复合二维旋转
应用于P的两个连续旋转产生的变换为:
因此,点旋转的最后坐标可以使用复合变换矩阵计算为:
合并两个连续的二维缩放操作的变换矩阵,生成如下的复合缩放矩阵:
或
这种情况下的结果矩阵表明,连续缩放操作是相乘的,假如我们要连续两次将对象尺寸放大3倍,那么其最后的尺寸将是原来尺寸的9倍。
4.4通用二维基准点旋转
当图形软件包仅提供绕坐标系原点旋转函数时,我们可通过完成下列 平移-旋转-平移操作序列来实现绕任何选定的 基准点( xr, yr)的旋转。
1.平移对象使基准点位置移动到坐标原点;
2.绕坐标原点旋转;
3.平移对象使基准点回到其原始位置
这个变换序列如图所示。利用矩阵合并可以得到该序列的复合变换矩阵方程1:
可以使用下列形式表示:
其中, T(-x r ,-y r )= T -1 (x r ,y r ) 。通常,可以将图形库中的旋转函数设计成先接收基准点坐标参数及旋转角,然后自动生成方程1的旋转矩阵。
4.5 通用二维基准点缩放
只有相对于坐标原点缩放的缩放函数时,下图中给出了关于任意选择的基准位置( x∫,y∫ )缩放的变换序列:
1.平移对象使
2.对于坐标原点经行缩放;
3.使用步骤1的反向平移将对象返回到原始位置。
将这三个操作的矩阵合并,就可以产生所需的缩放矩阵:
或:
该变换在提供接收基准点坐标的缩放函数的系统中自动生成。
4.6 通用二维定向缩放
参数 Sx 和 Sy 沿x和y方向缩放对象,可以通过在应用缩放变换之前,将对象所希望的缩放方向旋转到与坐标一致而在其他方向上缩放对象。假如我们要在下图所示的方向上使用参数S1和S2指定的值作为缩放系数。为了完成这种缩放而不改变对象方向,我们首先完成旋转操作,使 s1 和 s2 的方向分别与x和y轴重合。然后应用缩放变换S( s1, s2 ),再经行反向旋转以回到其原始位置。从这三个变换的乘积得到的复合矩阵2为:
作为缩放变换的一个例子,通过沿(0,0)到(1, 1)的对角线将单位正方形拉长,使其转换成平行四边形(参见下图 )。我们使用参数θ= 45度将对角线旋转到y轴,并按s1 = 1和s2 = 2将其长度加倍,然后再旋转使对角线回到原来的位置。
在复合矩阵2,假设缩放是相对原点完成的,可以将这个缩放操作推进一步并与平移操作合并,从而使复合矩阵包含为指定的固定位置进行缩放的参数。