计算机图形学_第七章_几何变换分解课件

PPT
  • 阅读 60 次
  • 下载 0 次
  • 页数 68 页
  • 大小 1.427 MB
  • 2022-12-01 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
计算机图形学_第七章_几何变换分解课件
可在后台配置第一页与第二页中间广告代码
计算机图形学_第七章_几何变换分解课件
可在后台配置第二页与第三页中间广告代码
计算机图形学_第七章_几何变换分解课件
可在后台配置第三页与第四页中间广告代码
计算机图形学_第七章_几何变换分解课件
计算机图形学_第七章_几何变换分解课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 68
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】计算机图形学_第七章_几何变换分解课件.ppt,共(68)页,1.427 MB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-77491.html

以下为本文档部分文字说明:

Lecture7几何变换概述在计算机图形学中,通常需要将画出的图形平移到某一位置,或改变图形的大小和形状,或利用已有图形生成复杂图形,这种图形处理的过程就是图形的几何变换,简称图形变换。二维图形和三维

图形都可以进行图形变换。图形变换通常采用矩阵的方法,图形所做的变换不同其变换矩阵也不同。变换的实质是对由图形上各点的坐标组成的矩阵进行运算,因此在讨论各种具体图形几何变换时,可以归结为一个点的变换。7.1二维基本变换二维基本变换包括:•平移•比例•旋转7.1.

1平移变换平移是一物体从一个位置到另一位置所作的直线移动。如果要把一个位于的点移到新位置时,只要在原坐标上加上平移距离Tx及Ty即可平移变换表示成数学形式:表示成向量形式:可以用矩阵相加来表示P点的位移计为:yxTyyTxxxPy'''

xPyxyTTT''xyTxxTyy'PPT7.1.2比例变换用来改变一物体大小的变换称为比例变换(缩放变换)。如果要对一个多边形进行比例变换,那么可把各顶点的坐标(x,y)均乘以比例因子Sx、Sy

,以产生变换后的坐标(x’,y’)比例变换表示成数学形式:如果令则比例变换可以表示成以下的矩阵形式:记为:xyxSxySy00xySSS0'0'xySxxSyy'PSP7.1.3旋转变换物体上的各点绕一固定点

沿圆周路径作转动称为旋转变换。我们可用旋转角表示旋转量的大小。一个点由位置(x、y)旋转到(x′y′)如下图所示,θ为旋转角。旋转变换由图可得到如下三角关系式:则相对于坐标原点的旋转变换公式如下:'os()co

scossinsincossinxrcrrxy'sin()cossinsincossincosyrrrxy'cossin'cossinxxyyyx旋转变换如果令则有记为sinsincos

cosR'cossin'sincosxxyy'cossin'cossinxxyyyx'PRP7.2二维几何变换的齐次坐标

表示可以看出,平移变换的处理方法与其他两种变换的形式不一样,但我们希望能够用一种一致的或同类的方法来处理这三种变换,使得这三种基本变换能很容易地结合在一起,形成各种复杂的组合变换。为了解决这个问题,引入齐次坐标这一概念。基本思想:把一个n维空间的几何问题,转换到n+1维空间中去解决。即用一个有n

+1个分量的向量去表示一个有n个分量的向量。进一步分析知,平移变换是对常数项的变换,而比例和旋转则是对x和y项的变换。二维几何变换的齐次坐标表示如果我们既要对常数项进行变换,也要对x和y项进行变换,我们进行如何的处理呢?观察如下的表达式:则有:x’=a1x+a2y+a3cy’=b1x+b

2y+b3cc’=c1x+c2y+c3ccyxcccbbbaaacyx321321321'''二维几何变换的齐次坐标表示如果我们令:a1=1,a2=0,a3=Txb1=0,b2=1,b3=

Tyc1=0,c2=0,c3=1,c=1则有:x’=x+Txy’=y+Ty1=1上两式正好是坐标的平移变换。二维几何变换的齐次坐标表示使用这种表示方法,坐标的平移变换可以表示为:平移变换的矩阵形式缩写:这样,我们就把矩阵的加法运算转化为矩阵的乘法运算,我们使用的这种表达坐标的方法就叫齐次坐标表

示。(x,y)表达为(hx,hy,h),当h=1时称为规格化齐次坐标。'10'0110011xyxTxyTy'(,)xyPTTTP二维几何变换的齐次坐标表示使用规格化齐次坐标,我们可以表示另外两种变换:比例变换的矩阵形式:缩写为:旋

转变换的矩阵形式:缩写为:'00'0010011xyxSxySy'()xyPSSSP,'cos-sin0'sincos010011xxyy

'()PRP7.2.3其他变换反射变换:反射是用来产生物体的镜象的一种变换。物体的镜象一般是相对于一对称轴生成的。•关于x轴对称变换•关于y轴对称变换•关于坐标原点的对称变换关于x轴对称变换关于x轴的

对称变换,是一种特殊形式的缩放变换,其中,Sx=1,Sy=-1,如图所示,其变换矩阵为:100010001xRF关于y轴对称变换关于y轴的对称变换,是一种特殊形式的缩放变换,其中,Sx=-1,Sy=1,如图

所示,其变换矩阵为:100010001yRF关于坐标原点的对称变换关于y轴对称变换,是一种特殊形式的缩放变换,其中,Sx=-1,Sy=-1,如图所示,其变换矩阵为:100010001ORF错切变换这种变换可使物体产生变形,即物体产生扭转或

称为错切。常用的两种错切变换是沿x向或沿y向错切变换。•沿x方向关于y轴的错切•沿y方向关于x轴的错切沿x方向关于y轴的错切在下图中,对矩形ABCD沿x轴方向进行错切变换,得到矩形A’B’CD。错切的角度为θ,令

shx=tanθ假定点(x,y)经错切变换后变为(x’,y’),由下图可知:从而沿x方向关于y轴的错切的变换矩阵为:''xxxyshyy10()010001xyxshSHsh沿

y方向关于x轴的错切在下图中,对矩形ABCD沿y轴方向进行错切变换,得到矩形AB’C’D。错切的角度为θ,令shy=tanθ,假定点(x,y)经错切变换后变为(x’,y’),由下图可知:从而沿y方向关于x轴的错切的变换矩阵为:

''yxxyyxsh100()10001xyySHshsh7.2.4二维几何变换的一般形式设图形上一点的坐标为P(x,y),经过二维几何变换后的坐标为P’(x’,y’),变

换矩阵一般可写为:即:这样的变换在数学上称为仿射变换(AffineTransformation)。前面介绍的几种变换都是仿射变换的特例。''10011xabcxydefy

''xaxbycydxeyf7.3组合变换任意一个变换序列均可表示为一个组合变换矩阵。组合变换矩阵可由基本变换矩阵的乘积求得。由若干基本变换矩阵相乘求得组合变换矩阵的方法称为矩阵的级联。•单个基本

变换的组合变换•多个基本变换的组合变换7.3.1单个基本变换的组合变换组合平移变换对一物体连续平移两次,假定两次平移的距离为(Tx1,Ty1)及(Tx2,Ty2),则由此可计算出组合矩阵为:上式表明,进行连续两次平移,实际上是把平移距离相加,即2211221

1'(,){(,)}{(,)(,)}xyxyxyxyPTTTTTTPTTTTTTP21122112101010010101001001001xxxxyyyyTTTTTTTT

22111212(,)(,)(,)xyxyxxyyTTTTTTTTTTT1212'(,)xxyyPTTTTTP组合比例变换作用于点P的两次连续的比例变换的变换矩阵为:即:连续进行两次比例变换,实际上是把相应的比例因

子相乘。21122112000000000000001001001xxxxyyyySSSSSSSS22111212(,)(,)(,)xyxyxxyySSSSSSSSSSS组合旋转变换连续两次旋转的组

合变换矩阵可用下式表示与组合平移的情况相似,连续旋转实际上是把旋转角相加。2112()()()RRR7.3.2多个基本变换的组合变换相对于任一固定点的比例变换首先把图形及固定点一起平移,使固定点移到坐标原点上;然后把图形相对于原点进行比例变换;最后把图形及固定点一起

平移,使固定点又回到原来位置。相对于任一固定点的比例变换此变换序列可表示为:其中变换矩阵为:'(,)AxyPSSSP(,)(,)(,)(,)1000100100010010010010(1)0(1)001AxyAAxyAAAxAA

yAxAxyAySSSTxySSSTxyxSxySySxSSySOPENGL程序中的变换顺序glMatrixMode(GL_MODELVIEW);/指定当前操作矩阵类型glLoad

Identity();/设置当前操作矩阵为单位矩阵glMultMatrix(TT(XA,YA));/用当前矩阵乘以函数所提供矩阵glMultMatrix(TS(Sx,Sy));glMultMatrix(TT(-XA,-YA));glBegin(GL_POINTS);glVertex3f(x,

y,x);glEnd();围绕任一基准点的旋转变换下图所示的为围绕任一基准点A(xA,yA)旋转时,由一变换序列得到一组合矩阵的过程。首先,把物体平移,使基准点与坐标原点重合,然后,把物体绕原点旋转,最后,把物体平移,使基准点回到原来位置。围绕任一基准点的旋转变换此变换序列可以用以下

矩阵的乘积表示:()(,)()(,)10cossin01001sincos001001001001cossin(1cos)sinsincos(1cos)sin001AAAAAAAAAAAAARTxyRTxyxxyyxyyx

关于任意轴的对称变换以任一直线l为对称轴的对称变换可以用变换合成的方法按如下步骤建立。①平移使l过坐标原点,记变换为T1,图形A被变换到A1。②旋转θ角,

使l和ox轴重合,记变换为R1,图形Al被变换到A2。③求图形A关于x轴的对称图形A3,记变换为RFx。④旋转-θ角,记变换为R2,图形A3被变换到A4。⑤平移使l回到其原先的位置,记变换为T2,图形A4被变换到As。As即为A关于l的对称图形。总的变换为:2211xT

RRFRT变换矩阵的级联特性矩阵相乘是符合结合律的,即在求A、B、C三个矩阵的积时,可以先把A及B相乘,也可以先把B及C相乘,即但矩阵相乘是不符合交换律的,即一般矩阵积A·B与B·A不相等。这样,如果我们要对一物体进行平移及旋转变换,则要特别注意矩阵级联的

次序。采用不同的变换次序,其最后结果是不一样的。)()(CBACBACBA7.4三维几何变换•三维图形的平移,比例及旋转变换是对二维变换的扩展•三维旋转一般不能直接由二维变换扩展得到,因为三维旋转可围绕空间任何方位的轴进行。•三维几何变

换方程也可以用变换矩阵表示。任何一个变换序列均可用一个矩阵表示,此矩阵是把序列中的各个矩阵级联到一起而得到的.•对于三维空间点需要用4个数来表示,而相应的变换矩阵是4×4阶矩阵。7.4.1三维坐标系的建立右手坐标系:伸出右手,当用大姆指指向

x轴的正方向,食指指向y轴的正方向,则与手心垂直的中指方向就是z轴正向。在计算机图形学中,两种坐标系都可以使用。右手坐标系为大多数人所熟悉,因此在讨论图形的数学问题时常使用右手坐标系。本课程中没有指明时,均指右手坐标系。7.4.2三维图形几何变换三维几何变换也可利用齐次坐标的概念,变

换可以用一个4×4的变换矩阵来表示。设三维空间中的点P(x,y,z),其规格化齐次坐标为(x,y,z,1)。若变换矩阵为T,T为4×4的矩阵,则变换后的点P’=T·P。平移变换在用三维齐次坐标表示时,把一个点由位置(x,y,z)平移至位置(x’,y’

,z’)可用以下矩阵运算实现:所示的矩阵表达式与以下三式等效:'100'010'001100011xyzxTxyTyzTzxyzx'=x+Ty'=y+Tz'=z+T比例

变换设空间一点P(x,y,z)以原点为中心,在三根轴上分别放大或缩小Sx、Sy,Sz倍,变换矩阵为:000000(,,)0000001xxyyxyzzzSSSSSSS旋转变换三维空间的旋转

:•绕x轴的旋转•绕y轴的旋转•绕z轴的旋转•绕空间一条任意轴的旋转绕x轴的旋转当点P(x,y,z)绕x轴旋转α角到P’(x’,y’,z’)时,点的x坐标值不变,则有:变换矩阵为:''cossin'sincosxxyyzzyz10000co

ssin0()0sincos00001xR绕y轴的旋转当点P(x,y,z)绕y轴旋转β角到P’(x’,y’,z’)时,点的y坐标值不变,则有:变换矩阵为:'cossin''sincosxxzyyzxz

cos0sin00100()sin0cos00001yR绕z轴的旋转当点P(x,y,z)绕y轴旋转γ角到P’(x’,y’,z’)时,点的z坐标值不变,则有:变换矩阵为:'cossin'sincos'xxyyxyzz

cossin00sincos00()00100001zR反射变换如果要对于xy平面进行变换,此变换实际上是改变z坐标的符号而保持x、y坐标不变,一点相对于xy平面反射变

换矩阵为:同样可定义相对于yz平面或xz平面进行变换的矩阵:1000010000100001xyRF1000010000100001yzRF1000010000100001zxRF

错切变换三维错切变换是指对定义一个点的三个坐标值中的两个进行变换,使三维形体发生错切变形的变换.下面是以z轴为依赖轴(z值不变)产生三维错切的变换矩阵:100010(,)00100001xyzxyshshSHsh

sh围绕任意轴的旋转变换在给定旋转轴的特征及旋转角之后,可用以下5步完成对任意轴的旋转:①平移物体使旋转轴通过坐标原点。②旋转物体使旋转轴与某一坐标轴重合。③进行规定的旋转。④进行反旋转使放置轴回到原来的方位。⑤进行反平移

使旋转轴回到原来的位置。围绕任意轴的旋转变换首先,假定旋转轴用两点定义P1(x1,y1,,z1)和P2(x2,y2,,z2),由此两点定义一向量:用此向量可求得沿旋转轴的单位向量:用以下平移矩阵可把物体平移使旋转轴通过坐标原点:),,(121212zzy

yxxV),,(cbaVVu111111100010(,,)0010001xyTxyzz围绕任意轴的旋转变换要使旋转轴与z轴重合,可通过以下两步实现,首先,围绕x轴旋转使

向量u转到xz平面中;然后围绕y轴旋转使u与z轴重合。首先确定使u转到xz平面所需的旋转角的正弦及余弦值。'cos'zzuucuud22=(+)dbcdbsin围绕任意轴的旋转变换上面已由的各个分量确定了及的值,由此可得到绕x轴的旋转矩阵为:100

00//00//00001)(dcdbdbdcRx围绕任意轴的旋转变换下面确定把xz平面中的单位向量围绕轴旋转到正轴的变换矩阵。因此首先确定的sin和cos值:sin=a,cos=d由此可得到绕y轴的旋转矩阵为:100000001000)(daadRy围绕任意

轴的旋转变换用上述变换矩阵,可使旋转轴与z轴重合。然后,按给定的旋转角θ绕z轴旋转,此旋转矩阵为:为完成绕任意轴的旋转,最后要把旋转轴变换回原来位置。这样,围绕任意轴旋转的变换矩阵可表示为以下七个独立变换的组合:

1000010000cossin00sincos)(zR111111()(,,)()()()()()(,,)xyzyxRTxyzRRRRRTxyz

三维几何变换的一般形式设图形上一点的坐标为P(x,y,z),经过二维几何变换后的坐标为P’(x’,y’,z’),变换矩阵一般可写为:即'''100011xabcdxyefghyzijklz

'''xaxbyczdyexfygzhzixjykzl三维几何变换的一般形式我们可以得到以下结论:①的作用是对点的坐标进行比例、旋转等变换。②的作用是对点进行平移变换。abcefgijkdhl7.4.3三维

坐标系变换实现图形变换可采用两种思想:第一种就是在同一个坐标系中实现图形的平移、旋转等变换,变换后的图形与变换前的图形在同一个坐标系中.另一种等效的方法是把变换看成是坐标系的变动,变换前和变换后的图形在不同的坐标系中。三维坐标

系变换假定有两个坐标系Oxyz和,其中在坐标系Oxyz中,的坐标为。分别为三个单位向量(ux,uy,uz),(vx,vy,vz)和(nx,ny,nz),现在用变换合成的方法将坐标系Oxyz中的图形变换到坐标系中去(见下图):三维坐标系变换变换步骤如下:①平移使落于原点O,变换为;②绕x轴旋转角

度θx,使n轴落于xOz平面,变换为Rx(θx);③绕y轴旋转角度θy,使n轴与z轴同向且重合,变换为Ry(θy);④绕z轴旋转角度θz,使u轴和x轴同向且重合,变换为Rz(θz)。三维坐标系变换则变换矩阵为:其实,由线性代数知识可知,从坐标系Oxyz到的正交变换为:所以上述矩阵变换,可以表

示为:()()()(,,)xyzxyzuvnzzyyxxMRRRTOOO0000001xyzxyzxyzuuuvvvRnvv00(,,)00001xyzxyzxyzxyzuvnxyzuuuvvvMTOOOnvv

从三维空间到二维平面在真实世界里,所有的物体都是三维的。但是,这些三维物体在计算机世界中却必须以二维平面物体的形式表现出来。那么,这些物体是怎样从三维变换到二维的呢?下面我们采用相机(Camera)模拟的

方式来讲述这个概念从三维空间到二维平面从三维空间到二维平面,就如同用相机拍照一样,通常都要经历以下几个步骤:第一步,将相机置于三角架上,让它对准三维景物第二步,将三维物体放在适当的位置(模型变换,Model

ingTransformation);第三步,选择相机镜头并调焦,使三维物体投影在二维胶片上(投影变换,ProjectionTransformation);第四步,决定二维像片的大小(视口变换,ViewportTransformation)。视点方向:相机初始

方向都指向Z负轴glFrustum投影函数这个函数原型为:voidglFrustum(GLdoubleleft,GLdoubleRight,GLdoublebottom,GLdoubletop,GLdoublenear,GLdou

blefar);它创建一个透视视景体。其操作是创建一个透视投影矩阵,并且用这个矩阵乘以当前矩阵。这个函数的参数只定义近裁剪平面的左下角点和右上角点的三维空间坐标,即(left,bottom,-near)和(right,top,-near);near和far表示离视点

的远近,它们总为正值。矩阵函数解释voidglLoadMatrix{fd}(constTYPE*m)设置当前矩阵中的元素值。函数参数*m是一个指向16个元素(m0,m1,...,m15)的指针,这16个元素就是当前矩阵M中的元素,其排列方式如下:

1511731410621395112840mmmmmmmmmmmmmmmmM矩阵函数解释voidglMultMatrix{fd}(constTYPE*m)用当前矩阵去乘*m所指定的矩阵,并将结果存放于*m中。当前矩阵

可以是用glLoadMatrix()指定的矩阵,也可以是其它矩阵变换函数的综合结果。voidglLoadIdentity(void)功能:设置当前操作矩阵为单位矩阵(当前矩阵即为以后图形变换所要使用的矩阵)。几

何变换函数当几何变换时,调用OpenGL的三个变换函数glTranslate*()glRotate*()glScale*()实质上相当于产生了一个平移、旋转和比例矩阵,然后调用glMultMatrix()与当前矩阵相乘。平移函数平移变换函数如下:voidg

lTranslate{fd}(TYPEx,TYPEy,TYPEz)三个函数参数就是目标分别沿三个轴向平移的偏移量。这个函数表示用这三个偏移量生成的矩阵乘以当前矩阵。当参数是(0.0,0.0,0.0)时,表示对函数glTranslate*()的操作是单位矩阵

,也就是对物体没有影响。旋转函数旋转变换函数如下:voidglRotate{fd}(TYPEangle,TYPEx,TYPEy,TYPEz)函数中第一个参数是表示目标沿从点(x,y,z)到原点的方向逆时针旋转的角度(以度为单位),后

三个参数是旋转的方向点坐标。这个函数表示用这四个参数生成的矩阵乘以当前矩阵。当角度参数是0.0时,表示对物体没有影响。缩放和反射函数缩放和反射变换函数如下:voidglScale{fd}(TYPEx,TYPEy,TYPEz)三个函数参数值就是目标分别沿三个轴向缩放的比例因子。这个函数表示用

这三个比例因子生成的矩阵乘以当前矩阵。这个函数能完成沿相应的轴对目标进行拉伸、压缩和反射三项功能。当参数是(1.0,1.0,1.0)时,表示对函数glScale*()操作是单位矩阵,也就是对物体没有影响。当其中某个参数为

负值时,表示将对目标进行相应轴的反射变换,且这个参数不为1.0,则还要进行相应轴的缩放变换。堆栈操作•在计算机中,它常指在内存中开辟的一块存放某些变量的连续区域。因此,OpenGL的矩阵堆栈指的就是内存中专门用来存放矩阵数

据的某块特殊区域。矩阵堆栈对复杂模型运动过程中的多个变换操作之间的联系与独立十分有利。因为所有矩阵操作函数如glLoadMatrix()、glMultMatrix()、glLoadIdentity()等只

处理当前矩阵或堆栈顶部矩阵,这样堆栈中下面的其它矩阵就不受影响。堆栈操作函数有以下两个:voidglPushMatrix(void);voidglPopMatrix(void);程序•立方体变换投影程序(7_1)•原子模型程序(7_2)•机器人手臂程序(7_3)•基本变换程序

(7_4)

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?