计算机图形学第5章(3)_第1页
计算机图形学第5章(3)_第2页
计算机图形学第5章(3)_第3页
计算机图形学第5章(3)_第4页
计算机图形学第5章(3)_第5页
已阅读5页,还剩77页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第 五五 章章 二维变换及二维观察二维变换及二维观察5.1 5.1 基本概念基本概念5.2 5.2 基本几何变换基本几何变换5.3 5.3 复合变换复合变换5.4 5.4 二维观察二维观察5.5 5.5 剪剪 裁裁提出问题提出问题如何对二维图形进行方向、尺寸和形如何对二维图形进行方向、尺寸和形状方面的变换状方面的变换如何方便地实现在显示设备上对二维如何方便地实现在显示设备上对二维图形进行观察图形进行观察5.1.1 5.1.1 齐次坐标齐次坐标齐次坐标表示就是用齐次坐标表示就是用n+1维向量表示一个维向量表示一个n维向量。维向量。例:二维平面上的点例:二维平面上的点(x,y)的齐次坐标表示为的

2、齐次坐标表示为(hx,hy,h),其中,其中h0。 (x1, , xn) 的的齐次坐标表示:齐次坐标表示:(hx1, , hxn, h) n+1个分量中,个分量中,只有只有n个是独立的个是独立的,具有这种,具有这种特征的坐标就叫齐次坐标。特征的坐标就叫齐次坐标。5.1 5.1 基本概念基本概念5.1 5.1 基本概念基本概念 齐次坐标的不唯一性齐次坐标的不唯一性 规范化齐次坐标表示就是规范化齐次坐标表示就是h=1的齐次坐标表示。的齐次坐标表示。 如何从齐次坐标转换到规范化齐次坐标?如何从齐次坐标转换到规范化齐次坐标? 提供了用矩阵运算把二维、三维甚至高维空提供了用矩阵运算把二维、三维甚至高维空

3、间中的一个点集从一个坐标系变换到另一个间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。坐标系的有效方法。 可以表示无穷远点。可以表示无穷远点。5.1.2 5.1.2 几何变换几何变换 图形的几何变换是指对图形的几何信息经过图形的几何变换是指对图形的几何信息经过平平移移、缩放缩放、旋转旋转等变换后产生新的图形,是图形等变换后产生新的图形,是图形在方向、尺寸和形状方面的变换。在方向、尺寸和形状方面的变换。5.1 5.1 基本概念基本概念5.1.3 5.1.3 二维变换矩阵二维变换矩阵 smlqdcpbayxTyxyxD11121T3T2T4T平移投影整体比例变换整体比例变换比例、旋转、对称

4、5.1 5.1 基本概念基本概念5.2 5.2 基本几何变换基本几何变换基本几何变换都是相对于坐标原点和坐标轴基本几何变换都是相对于坐标原点和坐标轴进行的几何变换。进行的几何变换。 5.2.1 5.2.1 平移变换平移变换平移是指将平移是指将P点沿直线路径从一个坐标位置点沿直线路径从一个坐标位置移到另一个坐标位置的重定位过程。移到另一个坐标位置的重定位过程。平移是一种不产生变形而移动物体的刚体变换平移是一种不产生变形而移动物体的刚体变换(rigid-body transformation)YXTxTy图6-1 平移变换PPTTx,Ty称为平移矢量平移矢量1010001yxTT举例说明举例说明:

5、变换矩阵变换矩阵: 1 ,101000111yxyxTyTxTTyxyx5.2.2 5.2.2 比例变换比例变换 比例变换是指对比例变换是指对P点相对于坐标原点沿点相对于坐标原点沿x方向缩方向缩放放Sx倍,沿倍,沿y方向缩放方向缩放Sy倍。其中倍。其中Sx和和Sy称为比例称为比例系数。系数。YX图6-2 比例变换(Sx=2,Sy=3)P(4,3)P(2,1)举例说明举例说明:矩阵矩阵:1000000yxSS 001100,1001xyxySxyxySx Sy S(a) Sx=Sy比例原图(b) SxSy比例原图图6-3 比例变换SxSySx=Sy1Sx=Sy1S1,图形整体缩小;,图形整体缩小

6、;0S10S1,图形整体放大;,图形整体放大; S0 S0,发生和原点对称等比变换。,发生和原点对称等比变换。 二维旋转是指将二维旋转是指将P P点绕坐标原点转动某个角度(逆点绕坐标原点转动某个角度(逆时针为正,顺时针为负)得到新的点时针为正,顺时针为负)得到新的点P P的重定位过程。的重定位过程。YX图6-4 旋转变换PPrr5.2.3 5.2.3 旋转变换旋转变换举例说明:举例说明:矩阵矩阵:逆时针旋转逆时针旋转角角1000cossin0sincos简化计算简化计算 100010111yxyx5.2.4 5.2.4 对称变换对称变换对称变换后的图形是原图形关于某一轴线对称变换后的图形是原图

7、形关于某一轴线或原点的镜像。或原点的镜像。XY(a)关于x轴对称XY(b)关于y轴对称XY(d)关于x=y对称XY(e)关于x=-y对称100010001YXP(x,-y)P(x,y)(a)关于x轴对称(1)(1)关于关于x x轴对称(举例)轴对称(举例)YXP(-x,y)p(x,y)(b)关于y轴对称100010001(2)(2)关于关于y y轴对称(举例)轴对称(举例)YXP(x,y)(c)关于原点对称100010001(3)(3)关于原点对称(举例)关于原点对称(举例)YXp(x,y)p(y,x)x=y(d)关于x=y对称100001010(4)(4)关于关于y=xy=x轴对称(举例)轴

8、对称(举例)YXP(-y,-x)P(x,y)x=-y(e)关于x=-y对称100001010(5)(5)关于关于y=-xy=-x轴对称(举例)轴对称(举例) 错切变换,也称为剪切、错位变换,用错切变换,也称为剪切、错位变换,用于产生弹性物体的变形处理。于产生弹性物体的变形处理。YXYXYX(a) 原图(b) 沿x方向错切(c) 沿y方向错切图6-7 错切变换5.2.5 5.2.5 错切变换错切变换 其变换矩阵为: 1000101cb (1)沿沿x方向错切方向错切: b=0 (2)沿沿y方向错切方向错切: c=0 (3)两个方向错切两个方向错切5.2.6 5.2.6 二维图形几何变换的计算二维图

9、形几何变换的计算几何变换均可表示成几何变换均可表示成P P=P=P* *T T的形式的形式1. 1. 点的变换点的变换2. 2. 直线的变换直线的变换3. 3. 多边形的变换多边形的变换4. 4. 曲线的变换曲线的变换举例说明举例说明 1. 点的变换 rmlqdcpbayxyx112. 直线的变换rmlqdcpbayxyxyxyx111122112211 3. 多边形的变换rmlqdcpbayxyxyxyxyxyxyxyxnnnn1.1111.1113322113322115.3 复合变换 图形作一次以上的几何变换,变换结果是每次变换矩阵的乘积。 任何一复杂的几何变换都可以看作基本几何变换的组

10、合形式。 复合变换具有形式:) 1( )(321321nTTTTPTTTTPTPPnn1010001101000110100012121221121yyxxyxyxtttTTTTTTTTTTT复合变换复合变换二维复合平移二维复合平移1000000100000010000002121221121yyxxyxyxsssSSSSSSSSTTT复合变换复合变换二维复合比例二维复合比例)(21)()(21RRRR1000)cos()sin(0)sin()cos(1000cossin0sincos1000cossin0sincos212121212222111121rrrTTT复合变换复合变换二维复合旋转

11、二维复合旋转1000cos000cos100010110001011000cos000cos1000 cos sin0 sincostgtgtgtgR其他二维复合变换其他二维复合变换相对任一参考点的二维几何变换相对某个参考点(xF,yF)作二维几何变换,其变换过程为:(1) 平移;(2) 针对原点进行二维几何变换;(3) 反平移。例1. 相对点(xF,yF)的旋转变换100cossin0100010sincos001010011cossin0sincos0(cossin )(cossin )1RFFFFFFFFFFFTxyxyxxyyyx 相对任一参考点的二维几何变换相对任一参考点的二维几何变

12、换例2. 相对点(xF,yF)的比例变换10000100010000101001100001xRFyFFFFxyFxFFyFSTSxyxySSx Sxy Sy 相对任一参考点的二维几何变换5.3.6 5.3.6 相对任意方向的二维几何变换相对任意方向的二维几何变换 相对任意方向作二维几何变换,其变换的过程是:相对任意方向作二维几何变换,其变换的过程是:(1) (1) 旋转变换旋转变换(2) (2) 针对坐标轴进行二维几何变换;针对坐标轴进行二维几何变换;(3) (3) 反向旋转反向旋转例例3. 3. 相对直线相对直线y=xy=x的反射变换的反射变换例例4. 4. 将正方形将正方形ABCOABC

13、O各点各点沿 图沿 图 6 - 86 - 8 所 示 的所 示 的(0,0)(1,1)(0,0)(1,1)方向进行方向进行拉伸,结果为如图所示拉伸,结果为如图所示的,写出其变换矩阵和的,写出其变换矩阵和变换过程。变换过程。YX13/21/21/23/222图6-8 针对固定方向的拉伸OABCCBAoooooooocos( 45 )sin( 45 ) 000cos(45 )sin(45 ) 0sin( 45 ) cos( 45 ) 000sin(45 ) cos(45 ) 0001001001xySTS 112211222222222222222222000 0()() 00000()() 00

14、0100 100 1001xxyxyyxyxySSSSSSSSSS根据根据P= PP= P* *T T,计算得出,计算得出SxSx和和SySy。(0,0)(1,1)方向 即x=y 方向 ,于是按针对固定方向的变换形式进行计算。拉伸,即比例变换(Sx=?Sy=?)5.3.7 5.3.7 坐标系之间的变换坐标系之间的变换问题问题:图6-9 坐标系间的变换xyxyOOx0y0p(xp,yp)可以分两步进行:可以分两步进行:xyyOOx0y0 x(a)将xy坐标系的原点平移到xy坐标系的原点p(xp,yp)xyOyx(b)将x轴旋转到x轴上p(xp,yp)于是: RTtTpTpTpypxpypxp11

15、1000cossin0sincos101000100yxTTTrt5.3.8 5.3.8 光栅变换光栅变换直接对直接对帧缓存中像素点帧缓存中像素点进行操作的变换称为光栅进行操作的变换称为光栅变换。变换。 光栅平移变换:光栅平移变换: 9090、180180和和270270的光栅旋转变换:的光栅旋转变换: (y,rowlen-x)(y,rowlen-x)(rowlen-x,vollen-y)(rowlen-x,vollen-y)任意角度的光栅旋转变换:任意角度的光栅旋转变换: 旋转的象素阵列光栅网格AA213光栅比例变换:光栅比例变换: 5.4 5.4 二维观察二维观察5.4.1 5.4.1 基

16、本概念基本概念在计算机图形学中,将在用户坐标系中需要进行在计算机图形学中,将在用户坐标系中需要进行观察和处理的一个坐标区域称为观察和处理的一个坐标区域称为窗口窗口(WindowWindow)。)。 ( 用户坐标系定义)用户坐标系定义)显示设备上的坐标区域称为显示设备上的坐标区域称为视区视区(ViewportViewport)( 设备坐标系定义)设备坐标系定义)要将窗口内的图形在视区中显示出来,必须经过将窗口到视区要将窗口内的图形在视区中显示出来,必须经过将窗口到视区的变换(的变换(Window-Viewport TransformationWindow-Viewport Transformat

17、ion)处理,这种变换)处理,这种变换就是就是观察变换观察变换(Viewing TransformationViewing Transformation)。)。XYwxlXYwybwxrwyt窗口vxrvybvyt视区(a)用户坐标系中的窗口(b)屏幕坐标系中的视区vxlXY窗口图6-17 用户坐标系中旋转的窗口独立于设备独立于设备 观察坐标系观察坐标系(View Coordinate)(View Coordinate)和规范化设备坐标和规范化设备坐标系系(Normalized Device Coordinate) (Normalized Device Coordinate) 观察坐标系是依据

18、窗口的方向和形状在用户坐标平观察坐标系是依据窗口的方向和形状在用户坐标平面中定义的直角坐标系。面中定义的直角坐标系。规范化设备坐标系也是直角坐标系,它是将二维的规范化设备坐标系也是直角坐标系,它是将二维的设备坐标系规范化到(设备坐标系规范化到(0.00.0,0.00.0)到()到(1.01.0,1.01.0)的坐标范围内形成的。的坐标范围内形成的。引入了观察坐标系和规范化设备坐标系后,观察引入了观察坐标系和规范化设备坐标系后,观察变换分为如下图所示的几个步骤,通常称为二维变换分为如下图所示的几个步骤,通常称为二维观察流程。观察流程。 变焦距效果变焦距效果图6-20 变焦距效果(窗口变、视区不变

19、)(a) 原图及变化的窗口(b)与窗口对应的视区1(c)与窗口对应的视区2(d)与窗口对应的视区3112323 整体放缩效果整体放缩效果(a) 原图及窗口(b) 视区1图6-21 整体放缩效果(窗口不变、视区变)(c) 视区2(d)视区3漫游效果漫游效果 5.4.2 5.4.2 用户坐标系到观察坐标系的变换用户坐标系到观察坐标系的变换用户坐标系到观察坐标系的变换分由两个变换步骤用户坐标系到观察坐标系的变换分由两个变换步骤合成:合成:1. 1. 将观察坐标系原点移动到用户坐标系原点将观察坐标系原点移动到用户坐标系原点x用户y用户窗口y观察x观察(a) 平移变换2. 2. 绕原点旋转使两坐标系重合

20、绕原点旋转使两坐标系重合 x用户y用户窗口y观察x观察(b) 旋转变换00100cossin0010 . sincos01001tRTTTxy 5.4.3 5.4.3 窗口到视区的变换窗口到视区的变换XYwxlXYwybwxrwyt窗口vxlvybvyt视区图6-23 窗口到视区的变换(a)窗口中的点(b)视区中的点(xw,yw)(xv,yv)vxr窗口视图变换窗口视图变换变换过程变换过程 要将窗口内的点(要将窗口内的点(xw,yw)映射到相对应的视)映射到相对应的视区内的点(区内的点(xv,yv)需)需进行以下步骤:进行以下步骤:(1) (1) 将窗口左下角点移至用户系将窗口左下角点移至用户

21、系统系的坐标原点统系的坐标原点( (平移平移) )(2) (2) 针对原点进行比例变换针对原点进行比例变换(3) (3) 进行反平移进行反平移5.5 5.5 裁剪裁剪在二维观察中,需要在观察坐标系下对窗口进行在二维观察中,需要在观察坐标系下对窗口进行裁剪,即只保留窗口内的那部分图形,去掉窗口裁剪,即只保留窗口内的那部分图形,去掉窗口外的图形。外的图形。( (判断一个图形元素是否落在窗口区域判断一个图形元素是否落在窗口区域内内) )假设窗口是标准矩形,即边与坐标轴平行的矩形,假设窗口是标准矩形,即边与坐标轴平行的矩形,由上(由上(y=wyty=wyt)、下()、下(y=wyby=wyb)、左()

22、、左(x=wxlx=wxl)、)、右(右(x=wxrx=wxr)四条边描述。)四条边描述。5.5.1 5.5.1 点的裁剪点的裁剪wytywybwxrxwxl且, 则点则点P(x,y)在窗口内;在窗口内;否则,在窗口之外。否则,在窗口之外。5.5.2 5.5.2 直线段的裁剪直线段的裁剪假定直线段用假定直线段用p p1 1(x(x1 1,y,y1 1)p)p2 2(x(x2 2,y,y2 2) )表示。表示。直线段和剪裁窗口的可能关系:直线段和剪裁窗口的可能关系:完全落在窗口内完全落在窗口内完全落在窗口外完全落在窗口外与窗口边界相交与窗口边界相交 窗口图6-24 直线段与窗口的关系ABCDEF

23、HGIJ实交点是直线段与窗口矩形边界的交点。实交点是直线段与窗口矩形边界的交点。虚交点则是直线段与窗口矩形边界延长线或直线虚交点则是直线段与窗口矩形边界延长线或直线段的延长线与窗口矩形边界的交点。段的延长线与窗口矩形边界的交点。 窗口图6-25 实交点与虚交点ABCDEFHGIJ虚交点实交点实交点实交点虚交点虚交点1 1. Cohen-Sutherland算法算法基本思想:对每条直线段基本思想:对每条直线段p1(x1,y1)p2(x2,y2)分三种情分三种情况处理:况处理:(1) 直线段完全可见,直线段完全可见,“简取简取”之。之。(2) 直线段完全不可见,直线段完全不可见,“简弃简弃”之。之

24、。(3) 直线段既不满足直线段既不满足“简取简取”的条件,也不满足的条件,也不满足“简简弃弃”的条件,需要对直线段按交点进行分段,分的条件,需要对直线段按交点进行分段,分段后重复上述处理。段后重复上述处理。 编码:对于任一端点编码:对于任一端点(x,y),根据其坐标所在的区域,赋予,根据其坐标所在的区域,赋予一个一个4位的二进制码位的二进制码D3D2D1D0。编码规则如下:编码规则如下: 若若xwxr,则,则D1=1,否则,否则D1=0; 若若ywyt,则,则D3=1,否则,否则D3=0。 0000窗口01000101100100011010011010000010图6-26 窗口及区域编码D

25、3D2D1D0裁裁 剪剪裁剪一条线段时,先求出端点裁剪一条线段时,先求出端点p p1 1和和p p2 2的编码的编码code1code1和和code2code2,然后:,然后:(1)(1)若若code1|code2=0code1|code2=0,对直线段应简取之。,对直线段应简取之。(2)(2)若若code1&code20code1&code20,对直线段可简弃之。,对直线段可简弃之。(3)(3)若上述两条件均不成立。则需求出直线段若上述两条件均不成立。则需求出直线段与窗口边界的交点。在交点处把线段一分为二,其与窗口边界的交点。在交点处把线段一分为二,其中必有一段完全在窗口外,

26、可以弃之。再对另一段中必有一段完全在窗口外,可以弃之。再对另一段重复进行上述处理,直到该线段完全被舍弃或者找重复进行上述处理,直到该线段完全被舍弃或者找到位于窗口内的一段线段为止。到位于窗口内的一段线段为止。求交:假定直线的端点坐标为求交:假定直线的端点坐标为(x1,y1)和和(x2,y2)左、右边界交点的计算:左、右边界交点的计算: y = y1 + k(x - x1)上、下边界交点的计算:上、下边界交点的计算: x = x1 + (y-y1)/k其中,k(y2-y1)/(x2-x1)。)。窗口ABCDEFHGIJ虚交点实交点实交点实交点虚交点虚交点(1)(1)输入直线段的两端点坐标:输入直

27、线段的两端点坐标:p p1 1(x(x1 1,y,y1 1) )、p p2 2(x(x2 2,y,y2 2) ),以及窗,以及窗口的四条边界坐标:口的四条边界坐标:wytwyt、wybwyb、wxlwxl和和wxrwxr。(2)(2)对对p p1 1、p p2 2进行编码:点进行编码:点p p1 1的编码为的编码为code1code1,点,点p p2 2的编码为的编码为code2code2。(3)(3)若若code1|code2=0code1|code2=0,对直线段应简取之,转,对直线段应简取之,转(6)(6);否则,若;否则,若code1&code20code1&code2

28、0,对直线段可简弃之,转,对直线段可简弃之,转(7)(7);当上述两条;当上述两条均不满足时,进行步骤均不满足时,进行步骤(4)(4)。(4)(4)确保确保p p1 1在在窗口外部窗口外部:若:若p p1 1在窗口内,则交换在窗口内,则交换p p1 1和和p p2 2的坐标的坐标值和编码。值和编码。(5)(5)按按p p1 1的编码从低位开始找编码值为的编码从低位开始找编码值为1 1的地方,确定的地方,确定p p1 1在哪一在哪一侧,然后求出与相应窗口边界的交点,并用该交点的坐标侧,然后求出与相应窗口边界的交点,并用该交点的坐标值替换值替换p p1 1的坐标值。也即在交点的坐标值。也即在交点s

29、 s处把线段一分为二,并去处把线段一分为二,并去掉掉p p1 1s s这一段。考虑到这一段。考虑到p p1 1是窗口外的一点,因此可以去掉是窗口外的一点,因此可以去掉p p1 1s s。转转(2)(2)。(6)(6)用直线扫描转换算法画出当前的直线段用直线扫描转换算法画出当前的直线段p p1 1p p2 2。(7)(7)算法结束。算法结束。 算法演示算法演示算法的步骤:算法的步骤: 作业1 直线段裁剪的Cohen-Sutherland算法实现 要求要求:编写直线段裁剪函数以及主函数。输入输入:观察窗口的四个边界值wxl,wxr,wyb,wyt和直线段的端点坐标p1(x1,y1),p2(x2,y

30、2)。输出输出:观察窗口内部的线段端点坐标。如不在观察窗口内,则输出提示信息。语言语言:cc+javac#。注意注意:提交代码(不要使用附件),包含必要的注释,抄袭零分。 截止日期 2015年10月20日 下午11时59分00秒 满分15分第一次作业 用编码方法实现了对完全可见和不可见直线段的快速接受和拒绝; 求交点过程复杂,有冗余计算,并且包含浮点运算,不利于硬件实现。Cohen-Sutherland算法2. 2. 中点分割算法中点分割算法基本思想:基本思想: 当对直线段不能简取也不能简弃时,简单当对直线段不能简取也不能简弃时,简单地把线段等分为二段,对两段重复上述测试处地把线段等分为二段,

31、对两段重复上述测试处理,直至每条线段完全在窗口内或完全在窗口理,直至每条线段完全在窗口内或完全在窗口外。外。 (1)(1)输入直线段的两端点坐标:输入直线段的两端点坐标:p p1 1(x(x1 1,y,y1 1) )、p p2 2(x(x2 2,y,y2 2) ),以及窗,以及窗口的四条边界坐标:口的四条边界坐标:wytwyt、wybwyb、wxlwxl和和wxrwxr。(2)(2)对对p p1 1、p p2 2进行编码:点进行编码:点p p1 1的编码为的编码为code1code1,点,点p p2 2的编码为的编码为code2code2。(3)(3)若若code1|code2=0code1|

32、code2=0,对直线段应简取之,保留当前直线段的,对直线段应简取之,保留当前直线段的端点坐标,转端点坐标,转(5)(5);否则,若;否则,若code1&code20code1&code20,对直线段可,对直线段可简弃之,转简弃之,转(5)(5);当上述两条均不满足时,进行步骤;当上述两条均不满足时,进行步骤(4)(4)。(4)(4)求出直线段的中点求出直线段的中点M M,将,将p p1 1M M、p p2 2M M入栈。入栈。(5)(5)当栈不空时,从栈中弹出一条直线段,取为当栈不空时,从栈中弹出一条直线段,取为p p1 1p p2 2,转,转(2)(2)进进行处理。否则,继续行处理。否则,继续(6)(6)。(6)(6)当栈为空时,合并保留的直线段端点,得到窗口内的直线当栈为空时,合并保留的直线段端点,得到窗口内的直线段

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论