第三章计算机绘图基础图形变换一般是指将图形的几何信息经过几何变换后产生新的图形。图形变换既可以看作是图形不动而坐标系变动,变动后该图形在新的坐标系下具有新的坐标值,也可以看作是坐标系不动而图形变动,变动后的图形在坐标系中的坐标值发生变化。对于线框图形的变换:通常是以点变换为基础,把图形的一系列顶点作几何变换后,连接新的顶点序列即可产生新的变换后的图形。对于用参数方程描述的图形,可以通过参数方程几何变换,实现对图形的变换。在图形学中,在实现图形变换时通常采用齐次坐标系来表示坐标值,这样可方便地用变换矩阵实现对图形的变换。所谓齐次坐标表示法就是用n十1维向量表示一个n维向量,即n维空间中的点的位置向量(P1,P2,..Pn)被表示为具有n十1个坐标分量的向量(hP1,hP2,...,hPn,h)。齐次坐标表示法一方面可以表达无穷远点。例如,n十1维中,h=0的齐次坐标实际上表示了一个n维的无穷远点,另一方面它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。下面除非特别声明,否则,所讨论的几何变换均是指在齐次坐标系下。图形的几何变换基本的几何变换研究物体坐标在直角坐标系统内的平移、旋转和变比的规律,按照坐标的维数不同,基本变换可分为二维几何变换和三维几何变换两大类。但对于可用参数表示的曲线、曲面等图形的变换,基于效率的考虑,一般通过对其参数方程作变换来实现对整个图形的变换,而不是逐点进行,下面分别加以介绍。第一节二维图形的几何变换一、基本变换1平移(Translation)平移是将对象从一个位置(xy)移到另一个位置(x,y)的变换(图3.1)。Tx=x一x,Ty=y'-y称为平移距离。平移变换的公式为:Jy!x'=x+ Txy'=y+ Ty(x,y)图3.1平移2比例(scaling)变比是使对象按比例因子(Sx,Sy)放大或缩小的变换(图3.2)。变比计算公式为:x'=X-SXy'=y'sy从图3.2可见,按式(3.3)变比时,不仅对象的大小变化,而且,对象离原点的距离也发生了变化。如果只希望变换对象的大小,而不希望变比对角离原点的距离,则可采用固定(xty')点变比(scalingrelativetoafixedpoint)。如果(33),以a为x固定点进行变比的方法是:1)作平移Tx=一xa,Ty=一ya;2)按式(33)作变比;3)作1)的逆变换,即作平移Tx=xa,Ty=ya。当比例因子Sx或Sy小于0时,对象不仅变化大小,而且分别按x轴,或y的轴被反射
第三章 计算机绘图基础 图形变换一般是指将图形的几何信息经过几何变换后产生新的图形。图形变换既可以看 作是图形不动而坐标系变动,变动后该图形在新的坐标系下具有新的坐标值,也可以看作是 坐标系不动而图形变动,变动后的图形在坐标系中的坐标值发生变化。对于线框图形的变换, 通常是以点变换为基础,把图形的一系列顶点作几何变换后,连接新的顶点序列即可产生新 的变换后的图形。对于用参数方程描述的图形,可以通过参数方程几何变换,实现对图形的 变换。 在图形学中,在实现图形变换时通常采用齐次坐标系来表示坐标值,这样可方便地用变 换矩阵实现对图形的变换。所谓齐次坐标表示法就是用 n+1维向量表示一个 n 维向量,即 n维空间中的点的位置向量(P1,P2,.Pn)被表示为具有n+1个坐标分量的向量(hP1,hP2,., hPn,h)。齐次坐标表示法一方面可以表达无穷远点。例如,n+1维中,h=0的齐次坐标 实际上表示了一个 n 维的无穷远点,另一方面它提供了用矩阵运算把二维、三维甚至高维空 间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。下面除非特别声明,否则, 所讨论的几何变换均是指在齐次坐标系下。 图形的几何变换 基本的几何变换研究物体坐标在直角坐标系统内的平移、旋转和变比的规律,按照坐标 的维数不同,基本变换可分为二维几何变换和三维几何变换两大类。但对于可用参数表示的 曲线、曲面等图形的变换,基于效率的考虑,一般通过对其参数方程作变换来实现对整个图 形的变换,而不是逐点进行,下面分别加以介绍。 第一节 二维图形的几何变换 一、基本变换 1 平移(Translation) 平移是将对象从一个位置(x, y)移到另一个位置(x′,y′)的变换(图 3.1)。Tx=x′-x, Ty= y′-y 称为平移距离。平移变换的公式为: x′=x+Tx y′=y+Ty 2 比例(scaling) 变比是使对象按比例因子(Sx,Sy)放 大或缩小的变换(图 3.2)。变比计算公式为: x′=x·sx y′=y·sy 从图 3.2 可见,按式(3.3)变比时,不仅对象的大小变化, 而且,对象离原点的距离也发生了变化。如果只希望变换对 象的大小,而不希望变比对角离原点的距离,则可采用固定 点变比(scaling relative to a fixed point)。如果(3 3),以 a 为 固定点进行变比的方法是:1)作平移 Tx=-xa,Ty=-ya; 2)按式(3 3)作变比;3)作 1)的逆变换,即作平移 Tx=xa,Ty=ya。 当比例因子 Sx 或 Sy 小于 0 时,对象不仅变化大小,而且分别按 x 轴,或 y 的轴被反 射。 图 3.3 变比 图 3.1 平移
1(a)(b)(e)图3.3反射图3.3(a)表示当sy=一1,sx=1时的变化,此时按x轴反射。图3.3(b)表示当sy=1,sx=一1时的变比,此时按y轴反射。图3.3(c)示出当sx=一1,sy=-1时按(0,0)原点反射的情况。3旋转(Rotation)旋转是以某个参考点为圆心,将对象上的各点(xy)围绕圆心转动一个逆时针角度,变为新的坐标(x,y)的变换。当参考点为(0,0)时,旋转的公式为(图3.4):x'=rcos(a+)=rcosacoso—rsinasin(xi,yi)y'=rsin(a+)=rsinacoso+rcosasing:x=rcos,y=rsinα,所以上式可化为:x'=xcoso—ysina(x,y)y'=ycoso+xsina如果参考点不是(0,0),而是任意一点(xr,yr),那么,绕(xr,yr)点的旋转由三个步骤完成:1)将对象平移Tx=一xr,Ty=yr;2)按式(3图3.4旋转2)作旋转变换;3)平移Txxr,Tyyr。组合这三个步骤的计算公式为:x=xr+ (x-xr)coso- (y-yr)siney'=yr+(y-yr) cose+(x-xr)sine二、变换矩阵用一个行向量(xy)表示二维平面上任意一点P(x,y)的位置坐标,该行向量与一个2*2阶变换矩阵相乘,可实现p点的变换,令b)a(ax+cy bx+dy)=(x y)T(c d)即y*=bx+dyx*=ax+cy改变矩阵中元素的值,可实现比例、旋转、反射等变换。无法平移变换,引入齐次坐标。齐次坐标所谓齐次坐标表示法就是由n+1维向量表示一个n维向量。如n维向量(P1,P2..,Pn)表示为(hP1.hP2.ΛhPn.h),其中h称为坐标。1、h可以取不同的值,所以同一点的齐次坐标不是唯一的。如普通坐标系下的点(2,3)变换为齐次坐标可以是(1,1.5,0.5)4,6,2)6,9.3)等等。2、普通坐标与齐次坐标的关系为一对多”由普通坐标xh→齐次坐标由齐次坐标h-普通坐标
图 3.3(a)表示当 sy=-1,sx=1时的变化,此时按 x 轴反射。图 3.3(b)表示当 sy=1, sx=-1时的变比,此时按 y 轴反射。图 3.3(c)示出当 sx=-1,sy=-1时按(0,0)原点 反射的情况。 3 旋转(Rotation) 旋转是以某个参考点为圆心,将对象上的各点(x,y)围绕圆心转动一个 逆时针角度 θ,变为新的坐标(x′,y′)的变换。当参考点为(0,0)时,旋转的公式为(图 3.4): x′=rcos(α+θ)=rcosαcosθ-rsinαsinθ y′=rsin(α+θ)=rsinαcosθ+rcosαsinθ ∵ x=rcosα,y=rsinα,所以上式可化为: x′=xcosθ-ysinα y′=ycosθ+xsinα 如果参考点不是(0,0),而是任意一点(xr,yr),那么,绕(xr,yr) 点的旋转由三个步骤完成:1)将对象平移 Tx=-xr,Ty=yr;2)按式(3 2)作旋转变换;3)平移 Tx=xr,Ty=yr。组合这三个步骤的计算公 式为: x′=xr+(x-xr)cosθ-(y-yr)sinθ y′=yr+(y-yr)cosθ+(x-xr)sinθ 二、变换矩阵 用一个行向量(x y)表示二维平面上任意一点 P(x,y)的位置坐标,该行向量与一个 2*2 阶变换矩阵相乘,可实现 p 点的变换,令 即 x*=ax+cy y*=bx+dy 改变矩阵中元素的值,可实现比例、旋转、反射等变换。无法平移变换,引入齐次坐标。 齐次坐标 所谓齐次坐标表示法就是由 n+1 维向量表示一个 n 维向量。如 n 维向量(P1,P2, . ,Pn) 表示为(hP1,hP2,hPn,h),其中 h 称为哑坐标。 1、h 可以取不同的值,所以同一点的齐次坐标不是唯一的。 如普通坐标系下的点(2,3)变换为齐次坐标可以是(1,1.5,0.5)(4,6,2)(6,9,3)等等。 2、 普通坐标与齐次坐标的关系为“一对多” 由普通坐标h→齐次坐标 由齐次坐标÷h→普通坐标 = c d a b T ( ) ( ) ( ) * * y ax cy bx dy x y c d a b x = + + = 图 3.3 反射 图 3.4 旋转
3、当h=1时产生的齐次坐标称为规格化坐标”,因为前n个坐标就是普通坐标系下的n维坐标。设二维图形变换前坐标为(xy,1),变换后为(x**,1)1.二维变换矩阵T2D分为四部分:(adg)va,b,e,d可产生比例、旋转、对称、错切behT2D =Vc,f产生平移(cfiVG,h产生透视变换Vi则产生全比例变换(a d)对图形进行缩放、旋转、对称、错切等变换。6e(c f)::对图形进行平移变换。(g)对图形做投影变换。(hg:在x=二处产生一个灭点。g1二处产生一个灭点。h:在x=1():对整体图形进行伸缩变换。(100)010:(x*y*1)=(xy 11ooi:若i>1,则总体缩小;否则,总体放大。因此,上述3种基本变换公式都可以表示为3×3的变换矩阵和齐次坐标相乘的形式。对于平移、旋转、变比分别为:1平移的矩阵运算表示:0ol7010X1]=xy[,](3.1)简记为p'=p-T(Tx,Ty)1]其中p=[xy"p= [x y i]7005010TT」表示平移矩阵。T(Tx,Ty)=2比例的矩阵运算表示为:
3、 当 h=1 时产生的齐次坐标称为“规格化坐标”,因为前 n 个坐标就是普通坐标系下 的 n 维坐标。 设二维图形变换前坐标为(x,y,1),变换后为(x*,y*,1) 1. 二维变换矩阵 T2D 分为四部分: ✓ a,b,e,d 可产生比例、旋转、对称、错切 ✓ c,f 产生平移 ✓ G,h 产生透视变换 ✓ i 则产生全比例变换 因此,上述 3 种基本变换公式都可以表示为 3×3 的变换矩阵和齐次坐标相乘的形式。 对于平移、旋转、变比分别为: 1 平移的矩阵运算表示: (3.1) 简记为 p′=p·T(Tx,Ty) 其中 p=[x′ y′ 1] p=[x y 1] T(Tx,Ty)= 表示平移矩阵。 2 比例的矩阵运算表示为: = c f i b e h a d g T2D ( ) ( ) ( ) ( ) 若 则总体缩小;否则,总体放大。 :对整体图形进行伸缩变换。 :在 处产生一个灭点。 :在 处产生一个灭点。 :对图形做投影变换。 :对图形进行平移变换。 :对图形进行缩放、旋转、对称、错切等变换。 1, 0 0 0 1 0 1 0 0 * * 1 1 1 1 = = = i i x y x y i h h x g g x h g c f b e a d
00Sx0s,0100111L[x'y'(3.2)i]=[xy简记为p'=p-S(Sx,Sy),其中(sx,sy)表示变化矩阵。A111[400[421]A·B311020=1221Bcl3o01图3-7图形的畸变46.1Jc.3二维基本变换-对称变换(ad o)y* l)=(x y/b e 0(x*=(ax+by dx+ey 1)(001)当b=d=0,a=-1,e=1时,(x*y*1)=(-xy1):与y轴对称的反射变换。L-当b=d=0,a=1,e=-1 时,(x*y* 1)=(x-y1):与x轴对称的反射变换。-当b=d=0,a=e=-1 时,(x* y* 1)=(-x-y1):与原点对称的反射变换。当 b=d=1,a=e=0 时,(*y* 1)=(yx1):与 y=x对称的反射变换。■当 b=d--1,a=e=0 时,(x*y*1)=(-y-x1):与y=-x对称的反射变换。例1对右图中的三角形ABC进行下列变换(1)对x轴的对称变换生成的新坐标为:A(241100)(2-41)4B2210-10-2-21Bc53 0 0 (5 -3 c(2)对原点的对称变换如下:NA(24-100)-41A-2-2 1BB2210-10=c53001-5-3 1c图3-8三角形ABC的对称变换4旋转的矩阵运算表示为:cosgsingosingcosg001[x'y'i]=[x y i](3.3)简记为p=p-R(0)其中R(0)表示旋转矩阵。顺时针变换矩阵(coso-sing0)T=singcoso0001例2对右图中三角形ABC进行以下的旋转变换
[x′ y′ 1]=[x y 1] (3.2) 简记为 p′=p·S(Sx,Sy),其中(sx,sy)表示变化矩阵。 3 二维基本变换-对称变换 ◼ 当 b=d=0,a=-1,e=1 时,(x* y* 1)=(-x y 1):与 y 轴对称的反射变换。 ◼ 当 b=d=0,a=1,e=-1 时,(x* y* 1)=( x -y 1):与 x 轴对称的反射变换。 ◼ 当 b=d=0,a=e=-1 时,(x* y* 1)=(-x -y 1):与原点对称的反射变换。 ◼ 当 b=d=1,a=e=0 时,(x* y* 1)=(y x 1):与 y=x 对称的反射变换。 ◼ 当 b=d=-1,a=e=0 时,(x* y* 1)=(-y -x 1):与 y=-x 对称的反射变换。 例 1 对右图中的三角形 ABC 进行下列变换 (1)对 x 轴的对称变换生成的新坐标为: (2)对原点的对称变换如下: 4 旋转的矩阵运算表示为: [x′ y′ 1]=[x y 1] (3.3) 简记为 p′=p·R(θ)其中 R(θ)表示旋转矩阵。 顺时针变换矩阵 例 2 对右图中三角形 ABC 进行以下的旋转变换 ( ) ( ) ( 1) 0 0 1 0 0 * * 1 1 b e ax by dx ey a d x y x y = + + = 1 1 1 5 3 1 2 2 1 2 4 1 0 0 1 0 1 0 1 0 0 5 3 1 2 2 1 2 4 1 C B A C B A − − − = − 2 2 2 5 3 1 2 2 1 2 4 1 0 0 1 0 1 0 1 0 0 5 3 1 2 2 1 2 4 1 C B A C B A − − − − − − = − − − = 0 0 1 sin cos 0 cos sin 0 T
(1)绕原点逆时针旋转900,其变换矩阵为cosesine0O100-100Tsin coso00011.031)AA(370001141P/Cl2儿00-121JCcOso-sin 0000singcoso00n000011图3-9图形绕原点作A(3-110-10-31A旋转变换0B41101-4 1B,1c2100(1-2 c(2)绕原点顺时针旋转900,其变换矩阵5二维基本变换-错切变换(1do)(x* y* 1)=(x y b 1 o=(r+by dx+y 1)02.(001)1)当d-0时,(x*y*1)=(x+byy1):图形的y坐标不变;当b>0:图形沿+x方向作错切位移。ABCD→A1B1BA2B2AAIBICIDI当b<O:图形沿-x方向作错切位移。ABCD→yA2B2C2D2C1D22)当 b=0时,(x*y*1)=(x(dx+y1)图形的x坐标不变;A2B1当d>0:图形沿+v方向作错切位移。ABCD→CDAIBICID1AB当d<O:图形沿-v方向作错切位移。ABCD-A2B2C2D2C2Dix3)当b#0且d+0时,A1(r*y*1)=(x+bydx+y1):图形沿xy两个方向作B2错切位移。错切变换引起图形角度关系的改变,甚至导致图形发生变形。例
(1)绕原点逆时针旋转 90o,其变换矩阵为 (2)绕原点顺时针旋转 90o,其变换矩阵 5 二维基本变换-错切变换 ( ) ( ) ( 1) 0 0 1 1 0 1 0 * * 1 1 b x by dx y d x y x y = + + = 1) 当 d=0 时, (x* y* 1)=(x+by y 1):图形的 y 坐标 不变; • 当 b>0:图形沿+x 方向作错切位移。ABCD→ A1B1C1D1 • 当 b<0:图形沿-x 方向作错切位移。ABCD→ A2B2C2D2 2)当 b=0 时, (x* y* 1)=(x dx+y 1)图形的 x 坐标不变; • 当 d>0:图形沿+y 方向作错切位移。ABCD→ A1B1C1D1 • 当 d<0:图形沿-y 方向作错切位移。ABCD→ A2B2C2D2 3) 当 b0 且 d0 时, • (x* y* 1)=(x+by dx+y 1) :图形沿 x,y 两个方向作 错切位移。 • ∴错切变换引起图形角度关系的改变,甚至导致 图形发生变形。 例 = − = − 0 0 1 1 0 0 0 1 0 0 0 1 sin cos 0 cos sin 0 T 1 1 1 1 2 1 1 4 1 1 3 1 0 0 1 1 0 0 0 1 0 2 1 1 4 1 1 3 1 1 C B A C B A − = − − − − = − = 0 0 1 1 0 0 0 1 0 0 0 1 sin cos 0 cos sin 0 T 1 1 1 1 2 1 1 4 1 1 3 1 0 0 1 1 0 0 0 1 0 2 1 1 4 1 1 3 1 1 C B A C B A − − − − = − −