第3章图形的变换与编辑本章要求:了解齐次坐标和图形几何变换的概念:能够根据图形的变换结果写出基本变换或组合变换的矩阵;熟练掌握编辑命令Scale(比例)、Mirror(镜像),Move(移动)、Rotater(旋转)、Stretch(拉伸)、Copy(复制)、Array(阵列)、Offset(偏移)和Align(对齐)。3.1齐次坐标表示法在绘制图形的过程中离不开对图形的修改,这些修改都是通过软件系统的修改工具来完成的,修改工具对整个图形的形状或位置进行修改的处理过程,实际上就是对图形的几何变换。在计算机图形学研究中,图形的几何变换可使用矩阵变换的方法来实现。为了便于以矩阵统一表示各种图形的变换,通常用齐次坐标来表示点的坐标,即二维点(X,Y)用三维齐次坐标(X,Y,H)表示,三维点(X,Y,Z)用四维齐次坐标(X,Y,Z,H)表示,这种用N+1维坐标表示N维坐标的方法称为齐次坐标表示法。当取H=1时称为正常化齐次坐标。3.2图形的变换图形变换是指对图形的几何信息进行几何变换后产生新的图形,矩阵是实施几何变换的有效工具。图形的变换包括基本变换和组合变换。3.2.1图形的基本变换在图形学原理中,图形的基本变换与AutoCAD二维绘图中部分修改命令的执行相一致。各种图形变换、相应修改命令及变换结果见表3-1。33
33 第 3 章 图形的变换与编辑 本章要求:了解齐次坐标和图形几何变换的概念;能够根据图形的变换结果写出基本变 换或组合变换的矩阵;熟练掌握编辑命令 Scale(比例)、Mirror(镜像),Move(移动)、 Rotater(旋转)、Stretch(拉伸)、Copy(复制)、Array(阵列)、Offset(偏移)和 Align(对 齐)。 3.1 齐次坐标表示法 在绘制图形的过程中离不开对图形的修改,这些修改都是通过软件系统的修改工具来完 成的,修改工具对整个图形的形状或位置进行修改的处理过程,实际上就是对图形的几何变 换。在计算机图形学研究中,图形的几何变换可使用矩阵变换的方法来实现。为了便于以矩 阵统一表示各种图形的变换,通常用齐次坐标来表示点的坐标,即二维点(X,Y)用三维 齐次坐标(X,Y,H)表示,三维点(X,Y,Z)用四维齐次坐标(X,Y,Z,H)表示, 这种用 N+1 维坐标表示 N 维坐标的方法称为齐次坐标表示法。当取 H=1 时称为正常化齐次 坐标。 3.2 图形的变换 图形变换是指对图形的几何信息进行几何变换后产生新的图形,矩阵是实施几何变换的 有效工具。图形的变换包括基本变换和组合变换。 3.2.1 图形的基本变换 在图形学原理中,图形的基本变换与 AutoCAD 二维绘图中部分修改命令的执行相一致。 各种图形变换、相应修改命令及变换结果见表 3-1
表3-1图形的修改命令、变换矩阵及变换结果应用命令变换矩阵参数讨论图形的变换结果当s=1时,a=d=1为恒等变换,[a0o]a=d>1为等比放大,1.ScaleodT, =0a-d<I为等比缩小;当a=d=l时,Lo 0比例变换s>1为等比缩小,s<1为等比放大-X等比放大Y当b=c=0时,若a=l、-1,则对X轴镜像当b=c=0时,若a=-1、d=1,则对Y轴镜像AD当b=c=0时,若a=-1、d=-1,2.Miror4[abo则对0镜像DcdoT=镜像变换[0012当a=d=0时,若b=l、C=1,则对Y=X轴镜像当a=d=0时,若b=-1、c=-1,Y则对Y=X轴镜像[1 0 0]沿X、Y方向分别移动1、m01004T, =3.Move*1平移变换-xml34
34 表 3-1 图形的修改命令、变换矩阵及变换结果 应用命令 变换矩阵 参数讨论 图形的变换结果 1.Scale 比例变换 = s d a TS 0 0 0 0 0 0 当 s=1 时,a=d=1 为恒等变换, a=d>1 为等比放大, a=d<1 为等比缩小;当a=d=1 时, s>1 为等比缩小,s<1 为等比放大 2.Mirror 镜像变换 = 0 0 1 0 0 c d a b Tm 当 b=c=0 时,若a=1、d= -1, 则对 X 轴镜像 当 b=c=0 时,若a= -1、d=1, 则对 Y 轴镜像 当 b=c=0 时,若a= -1、d= -1, 则对 O 镜像 当 a=d=0 时,若 b=1、c=1, 则对 Y=X 轴镜像 当 a=d=0 时,若 b= -1、c= -1, 则对 Y=-X 轴镜像 3.Move 平移变换 = 1 0 1 0 1 0 0 l m Tt 沿 X、Y 方向分别移动l、m 等比放大
逆时针旋转6大于0:顺时针cososino04.RotateOT.sinocoso旋转小于00001旋转变换当c=0时,若b>0则沿+Y方向错1b>0切:若b<0则沿-Y方向错切1b05.StretchLAb<0c10T错切变换1001当b=0时,若c>0则沿+X方向错切:若c<0则沿-X方向错切3.2.2图形的组合变换图形从一种状态变换到另一种状态,往往要经过若干次的基本变换才能完成。连续多次的基本变换称为组合变换。下面举例说明图形的组合变换与矩阵运算的关系。如图3-1所示,三角形对任意直线aX+bY+c=0作镜像变换,即由图3-1(a)变换为图3-1(b),求变换矩阵T。分析:(1)需要将直线和三角形沿X轴平移到坐标原点,如图3-1(c)所示。矩阵为T平移。(2)将直线和三角形一起绕原点顺时针旋转,使直线与X轴重合,如图3-1(d)所示。矩阵为T旋转。(3)将三角形对X轴镜像,如图3-1(e)所示。矩阵为T镜像。(4)将直线和三角形一起绕原点逆时针旋转θ,如图3-1(f)所示。矩阵为T反转。(5)将直线和三角形沿x轴平移回最初的位置,如图3-1(b)所示。矩阵为T反平移。变换(a)(b)平移反平移旋转镜像反旋转V(c)(d)(f)(e)35
35 4.Rotate 旋转变换 = − 0 0 1 sin cos 0 cos sin 0 Tr 逆时针旋转θ大于0;顺时针 旋转θ小于 0 5.Stretch 错切变换 = 0 0 1 1 0 1 0 c b Tc 当 c=0 时,若 b>0 则沿+Y 方向错 切;若 b<0 则沿-Y 方向错切 当 b=0 时,若 c>0 则沿+X 方向错 切;若 c<0 则沿-X 方向错切 3.2.2 图形的组合变换 图形从一种状态变换到另一种状态,往往要经过若干次的基本变换才能完成。连续多次 的基本变换称为组合变换。下面举例说明图形的组合变换与矩阵运算的关系。 如图 3-1 所示,三角形对任意直线 aX+bY+c=0 作镜像变换,即由图 3-1(a)变换为图 3-1(b),求变换矩阵 T。 分析: (1)需要将直线和三角形沿 X 轴平移到坐标原点,如图 3-1(c)所示。矩阵为 T 平移。 (2)将直线和三角形一起绕原点顺时针旋转θ,使直线与 X 轴重合,如图 3-1(d)所示。 矩阵为 T 旋转。 (3)将三角形对 X 轴镜像,如图 3-1(e)所示。矩阵为 T 镜像。 (4)将直线和三角形一起绕原点逆时针旋转θ,如图 3-1(f)所示。矩阵为 T 反旋转。 (5)将直线和三角形沿 x 轴平移回最初的位置,如图 3-1(b)所示。矩阵为 T 反平移。 平移 旋转 镜像 反旋转 反平移 (a) (b) (c) (d) (e) (f)
图3-1三角形对直线aX+bY+c=0镜像变换矩阵:T =T·T·T·T·T平移反平移旋转镜像反旋转0ocoso-sinoTcososing001071007T:10sincoso0100singcos000-100001-ca0001cao110-103.3图形的编辑操作1.Scale(比例)对选定的图形对象相对于基点以指定的比例因子放大或缩小。Scale命令以三种方式对图元对象进行缩放。(1)第一种,先确定缩放基点,然后输入缩放比例因子。(2)第二种,先输入选项“C”,再输入比例因子,则缩放后原图形保留。(3)第三种,输入选项“R”,给定一个数值或指定两点以确定一个参考长度,再输入另一个数值或指定另一个点以确定一个新的长度,则缩放比例因子就是这两个长度之比。单击修改面板中图标口,进行以下数据输入:命令:_scale选择对象:指定对角点:找到6个//框选图形,构造选择集选择对象:回车或按鼠标右键Ⅱ/结束构造选择集指定基点:/捕捉图中A点指定比例因子或复制(C)/参照(R)<1.0000>:2回车//完成2倍缩放执行结果如图3-2(a)所示。或者进行以下数据输入:命令:_scale选择对象:指定对角点:找到6个//框选图形,构造选择集选择对象:回车或按鼠标右键/结束构造选择集指定基点:1/捕捉图中A点指定比例因子或[复制(C)/参照(R)K<1.0000>:C回车缩放一组选定对象指定比例因子或复制(C)/参照(R)K1.0000>:3回车/完成3倍缩放执行结果如图3-2(b)所示。或者进行以下数据输入:命令:_scale选择对象:指定对角点:找到6个//框选图形,构造选择集选择对象:回车或按鼠标右键I/结束构造选择集指定基点:I/捕捉图中A点指定比例因子或[复制(C)/参照(R)K1.0000>:R回车指定参照长度<1.0000>:指定第二点:1/依次捕提B点和C点指定新的长度或点(P)<1.0000>://捕提D点执行结果如图3-2(c)所示。36
36 图 3-1 三角形对直线aX+bY+c=0 镜像 变换矩阵: 3.3 图形的编辑操作 1.Scale(比例) 对选定的图形对象相对于基点以指定的比例因子放大或缩小。Scale 命令以三种方式对 图元对象进行缩放。 (1)第一种,先确定缩放基点,然后输入缩放比例因子。 (2)第二种,先输入选项“C”,再输入比例因子,则缩放后原图形保留。 (3)第三种,输入选项“R”,给定一个数值或指定两点以确定一个参考长度,再输入 另一个数值或指定另一个点以确定一个新的长度,则缩放比例因子就是这两个长度之比。 单击修改面板中图标 ,进行以下数据输入: 命令:_scale 选择对象:指定对角点:找到 6 个 //框选图形,构造选择集 选择对象:回车或按鼠标右键 //结束构造选择集 指定基点://捕捉图中 A 点 指定比例因子或[复制(C)/参照(R)]<1.0000>:2 回车 //完成 2 倍缩放 执行结果如图 3-2(a)所示。或者进行以下数据输入: 命令:_scale 选择对象:指定对角点:找到 6 个 //框选图形,构造选择集 选择对象:回车或按鼠标右键 //结束构造选择集 指定基点://捕捉图中 A 点 指定比例因子或[复制(C)/参照(R)]<1.0000>:C 回车 缩放一组选定对象 指定比例因子或[复制(C)/参照(R)]<1.0000>:3 回车 //完成 3 倍缩放 执行结果如图 3-2(b)所示。或者进行以下数据输入: 命令:_scale 选择对象:指定对角点:找到 6 个 //框选图形,构造选择集 选择对象:回车或按鼠标右键 //结束构造选择集 指定基点://捕捉图中 A 点 指定比例因子或[复制(C)/参照(R)]<1.0000>:R 回车 指定参照长度<1.0000>:指定第二点: //依次捕捉B 点和 C 点 指定新的长度或[点(P)]<1.0000>: //捕捉 D 点 执行结果如图 3-2(c)所示。 T = T平移 •T旋转 •T镜像 •T反旋转 •T反平移 T = 0 1 0 1 0 1 0 0 c a − 0 0 1 sin cos 0 cos sin 0 − 0 0 1 0 1 0 1 0 0 − 0 0 1 sin cos 0 cos sin 0 − 0 1 0 1 0 1 0 0 c a
(b)(a)(c)图3-2图形的缩放2.Mirror(镜像)4将图形对象按照某个镜像线反射到该线的另一侧,生成一个与图形对象完全对称的图形对象。镜像时,原始图形可以保留在原处,也可以删除。镜像命令常用于对称图形的复制。单击修改面板中图标4,针对原始图形,如图3-3(a)进行以下数据输入:命令:_mirror选择对象:指定对角点:找到4个//框选中三角形和圆,构造选择集选择对象:回车或按鼠标右键//结束构造选择集指定镜像线的第一点:指定镜像线的第二点://依次选择A点和B点要删除源对象吗?【是(Y)/否(N)KN>:回车执行结果如图3-3(b)所示。最后一步,若输入字母“”则表示删除原位置处的图形,其结果见图3-3(c)。BBB(a)(b)(c)图3-3图形的镜像说明:如果参与镜像复制的图形对象中含有文字时,则镜像后文字只是位置的镜像复制。如果要使镜像后的文字方向镜像反转,则需要将系统变量MIRRTEXT设置为1,缺省情况下为0。图3-4所示分别为MIRRTEXT为1及为0时的效果图例。机械图样机械图样图机械图样1机械图样(a)原始图形(b)MIRRTEXT=I下的镜像复制(c)MIRRTEXT-O下的镜像复制图3-4文字的镜像复制37
37 (a) (b) (c) 图 3-2 图形的缩放 2.Mirror(镜像) 将图形对象按照某个镜像线反射到该线的另一侧,生成一个与图形对象完全对称的图形 对象。镜像时,原始图形可以保留在原处,也可以删除。镜像命令常用于对称图形的复制。 单击修改面板中图标 ,针对原始图形,如图 3-3(a)进行以下数据输入: 命令:_mirror 选择对象:指定对角点:找到 4 个 //框选中三角形和圆,构造选择集 选择对象:回车或按鼠标右键 //结束构造选择集 指定镜像线的第一点:指定镜像线的第二点://依次选择 A 点和 B 点 要删除源对象吗?[是(Y)/否(N)]<N>:回车 执行结果如图 3-3(b)所示。最后一步,若输入字母“Y”则表示删除原位置处的图形, 其结果见图 3-3(c)。 (a) (b) (c) 图 3-3 图形的镜像 说明:如果参与镜像复制的图形对象中含有文字时,则镜像后文字只是位置的镜像复制。 如果要使镜像后的文字方向镜像反转,则需要将系统变量 MIRRTEXT 设置为 1,缺省情况下 为 0。图 3-4 所示分别为 MIRRTEXT 为 1 及为 0 时的效果图例。 (a)原始图形 (b)MIRRTEXT=1 下的镜像复制 (c)MIRRTEXT=0 下的镜像复制 图 3-4 文字的镜像复制