三维图形变换课件.ppt
第第6章章 三维图形变换三维图形变换16.2 几何变换6.2.1 二维几何变换6.2.2 三维几何变换三维几何变换26.2.2 三维几何变换1.平移变换 2.缩放变换 3.旋转变换 4.变形变换5.对称变换31.平移变换n每个三维点(x,y,z)对应于一个齐次坐标x,y,z,1。所有的三维变换都可通过乘以一个44的变换矩阵来进行。n平移变换点(x,y,z)沿x轴方向平移Tx距离,沿y轴方向平移Ty距离,沿z轴方向平移Tz距离,变成点(x,y,z),这一变换过程的变换矩阵为:TxTzTy42.缩放变换n设一个点沿x,y,z轴缩放的比例分别为Sx,Sy,Sz,则缩放变换矩阵可表示为:n当|Sx|,|Sy|,|Sz|分别大于1时,为物体的放大;小于1时,为缩小变换;n当|Sx|,|Sy|,|Sz|皆等于1时,即为恒等变换;n当Sx,Sy,Sz分别小于0时,作相应坐标平面的镜面变换。53.旋转变换 绕坐标轴旋转n绕X轴变换 空间上的立体绕X轴旋转时,立体上各点的X坐标不变,只是Y、Z坐标发生相应的变化。yo(y,z)(y,z)zx=xy=cos(+)=y*cos-z*sinz=sin(+)=y*sin+z*cos(x,y,z)(x,y,z)xyz63.旋转变换 绕坐标轴旋转n绕Y轴旋转 此时,Y坐标不变,X,Z坐标相应变化。xozx=sin(+)=x*cos+z*siny=yz=cos(+)=z*cos-x*sinxyz(x,y,z)(x,y,z)73.旋转变换 绕坐标轴旋转n绕Z轴旋转 此时,Z坐标不变,X,Y坐标相应变化。xyo(x,y,z)(x,y,z)x=cos(+)=x*cos-y*siny=sin(+)=x*sin+y*cosz=zxzy8绕x轴旋转:绕y轴旋转:绕z轴旋转:3.旋转变换 绕坐标轴旋转93.旋转变换 旋转的方向n旋转角度为时,点的旋转方向:旋转轴 相应的旋转方向 x轴从y轴到z轴 y轴从z轴到x轴 z轴从x轴到y轴n这样定义旋转方向的原因是为了保证所用的旋转矩阵是相同的。zxy103.旋转变换 绕任意轴旋转n求绕任意直线旋转的矩阵的原则:n任意变换的问题 基本几何变换的组合n饶任意直线旋转的问题 绕坐标轴旋转的组合11绕任意轴旋转 点绕直线P1P2旋转角yxz P2yxzP1P2zyxP2P1 P2zyxP2(a,b,c)abc12绕任意轴旋转 绕直线P1P2旋转角n绕直线P1P2旋转角的过程可分解为下列步骤:1.把点P1(x1,y1,z1)移至原点;2.绕x轴旋转,使直线与xoz平面重合;3.绕y轴旋转,使直线与z轴重合;4.绕z轴旋转角;5.执行步骤(3)的逆变换;6.执行步骤(2)的逆变换;7.执行步骤(1)的逆变换;13绕任意轴旋转 绕直线P1P2旋转角n步骤(1):把点P1(x1,y1,z1)移至原点,变换矩阵为:P1P2zyxP2P114绕任意轴旋转 绕直线P1P2旋转角n步骤(2):绕x轴旋转,使直线与xoz平面重合。可知:P2zyxP2(a,b,c)abcn设d1=(b2+c2)1/2,则变换矩阵为:15绕任意轴旋转 绕直线P1P2旋转角n步骤(3):绕y轴旋转,使直线与z轴重合,此刻P2的坐标已变为P2(a,0,d1),可知:yxz P 2 (a,0,d1)令d2=(a2+b2+c2)1/2,则变换矩阵为:16绕任意轴旋转 绕直线P1P2旋转角n步骤(4):绕z轴旋转角,变换矩阵为:yxz17绕任意轴旋转 绕直线P1P2旋转角n步骤(5),执行步骤(3)的逆变换,变换矩阵为Ry(-);n步骤(6),执行步骤(2)的逆变换,变换矩阵为Rx(-);n步骤(7),执行步骤(1)的逆变换,变换矩阵为T3(x1,y1,z1)。n综上,绕直线P1P2旋转角的变换矩阵为:R()=T3(x1,y1,z1)Rx(-)Ry(-)Rz()Ry()Rx()T3(-x1,-y1,-z1)n注意:变换的过程有多种选择。如果中间的几个旋转次序变了,则各个矩阵的对应矩阵参数也会不同。184.变形变换(错切变换)n对于过原点的一条直线,如果希望把它变换成另一条不同的过原点的直线,可以通过变形变换来实现。它可以产生变形的效果。例如:一个正方体可通过三维变形变换变成一个平行六面体。zxyn这里只考虑比较简单的情况。把一条不在xoy平面上的过原点的直线变换成z轴,对应的z轴坐标都保持不变。n这样的“z-变形”变换可以考虑在yoz平面和xoz平面上进行组合变形。194.变形变换(错切变换)n对于yoz平面上的变形情况,考虑直线y=-bz,则变形后的直线方程为:n对于xoz平面上的变形情况,考虑直线x=-az,则变形后的直线方程为:zyy=-bzzxx=-azzxy204.变形变换(错切变换)n则z-变形变换的矩阵表达式如下:其中a,b参数由直线方程所决定。n设直线上任一点P(x1,y1,z1)0经过z变形变换,将变成P(0,0,z1),即:n如果该直线位于x,y平面,则z1=0,无法把它变换成z轴。zxy214.变形变换(错切变换)zyx沿z含x错切zyx沿z含y错切zyx沿y含x错切zyx沿y含z错切zyx沿x含y错切zyx 沿x含z错切225.对称变换n关于坐标平面xoy的对称变换:n关于其它坐标平面的变换类似。23第6章 图形变换6.1 变换的数学基础6.2 几何变换6.3 坐标变换坐标变换6.4 投影变换6.5 图形的显示流程6.6 三维裁剪246.3 坐标变换6.3.1 坐标系坐标系6.3.2 坐标变换6.3.3 几何变换和坐标变换的关系256.3.1 坐 标 系n对图形的描述、图形的输入输出都是在坐标系中进行的。n现实的物体具有高度、宽度、和深度。它们可以用三维坐标系的x轴、y轴和z轴来表示。n三维坐标系是一个直角坐标系;坐标系内任何一点可以由一个有序的三元组(x,y,z)来表示。每个坐标表示该点与坐标原点之间沿相应坐标轴的距离。zxyxyz266.3.1 坐 标 系n在现实世界中,人们通常使用右手坐标系表示物体的位置,因此它又经常被称为世界坐标系(World Coordinate System)。n在计算机图形显示时,一般采用另一种三维坐标系:计 算机的屏幕是一个平面。指定它的左下角为原点,x轴正向向右延伸,y轴正向向上延伸。另外,定义z轴从原点开始,指向屏幕内部,表示深度。这个坐标系称作左手坐标系。zxyxyz276.3.1 坐 标 系n世界坐标系 WC(World Coordinate System):包括常用的直角坐标系、几何坐标系等各种坐标系,用来直接描述对象。或称为用户坐标系UC(User Coordinate System),取值范围为整个实数域。n设备坐标系 DC(Device Coordinate System):图形的显示是在设备上进行的,在设备上描述图形的坐标系称为设备坐标系 DC(Device Coordinate System),取值范围受设备的输入输出的精度以及画面有效范围的限制。屏幕上显示的图形均以其一个像素点单位为量化单位。286.3 坐标变换6.3.1 坐标系6.3.2 坐标变换坐标变换6.3.3 几何变换和坐标变换的关系296.3.2 坐标变换n同一物体在不同的坐标系中描述时,会有不同的坐标值。在甲坐标系中定义一个物体,那么只要把乙坐标系的坐标轴及坐标原点变换成甲坐标系的坐标轴及坐标原点,就可以在乙坐标系中定义物体了。yoxP(4,5)yox(2,4)n例1:坐标系平移n坐标系xoy的原点o在坐标系xoy的坐标为(2,4),则从xoy到xoy的变换矩阵为T2(-2,-4),xoy坐标系中一点P(4,5)在xoy坐标系中的坐标矢量为:T2(-2,-4)4,5,1=2,1,1306.3.2 坐标变换n例2:坐标系旋转nxoy坐标系与xoy坐标系原点重合,将xoy坐标系逆时针旋转45就变成了xoy坐标系,则变换矩阵为:yxxyo(o)45。P316.3.2 坐标变换n例3:坐标系复合变换n求变换矩阵为平移矩阵和旋转矩阵的乘积矩阵:R2(/4)T2(-2,-4)yyooxx326.3 坐标变换6.3.1 坐标系6.3.2 坐标变换6.3.3 几何变换和坐标变换的关系几何变换和坐标变换的关系336.3.3 几何变换和坐标变换的关系n两者的原理及效果是相同的。都是利用变换矩阵来实现对图形的变换。n根据条件的不同,灵活选用几何变换或坐标变换可以简化问题。n几何变换:直观;n坐标变换:便于求解复杂问题。346.3.3 几何变换和坐标变换的关系n前面利用几何变换求解的问题:n绕空间中的直线P1P2旋转的问题。n也可以利用坐标变换来实现:n以P1点为坐标原点,P1P2为z轴构建一个直角坐标系。则问题就简化为绕z轴旋转的问题。n如何选择x轴、y轴?P1P2zyx35第6章 图形变换6.1 变换的数学基础6.2 几何变换6.3 坐标变换6.4 投影变换投影变换6.5 图形的显示流程6.6 三维裁剪366.4 投影变换6.4.1 概概 述述 6.4.2 透视投影6.4.3 平行投影376.4.1 概 述n在二维屏幕上如何表示三维物体?n显示器屏幕、绘图纸等是二维的,显示对象是三维的。n解决方法?n投影n三维显示设备n要把现实世界的三维物体在计算机的二维屏幕上表示出来,必须经过投影变化这一步骤,把物体从三维表示形式转化为二维表示形式。ABABzyABABzy386.4.1 概 述n根据投影中心(COP:Center of Projection)与投影平面之间的距离,投影变换可分为平行投影以及透视投影。投影面COP投影线ABAB平行投影投影面投影线ABABCOP透视投影39平面几何投影透视投影平行投影一点透视三点透视二点透视正投影斜投影三视图斜等侧正轴侧斜二侧等轴侧正三侧正二侧投影中心与投影平面之间的距离投影方向与投影平面的夹角投影平面与坐标轴的夹角平面几何投影分类平面几何投影分类406.4 投影变换6.4.1 概 述 6.4.2 透视投影透视投影6.4.3 平行投影416.4.2 透视投影n透视投影是一种中心投影法,在日常生活中,我们观察外界的景物时,常会看到一些明显的透视现象。n如:我们站在笔直的大街上,向远处看去,会感到街上具有相同高度的路灯柱子,显得近处的高,远处的矮,越远越矮。这些路灯柱子,即使它们之间的距离相等,但是视觉产生的效果则是近处的间隔显得大,远处的间隔显得小,越远越密。观察道路的宽度,也会感到越远越窄,最后汇聚于一点。这些现象,称之为透视现象。投影面投影线ABABCOP42AABBCCccbbaaE6.4.2 透视投影n产生透视的原因,可用下图来说明:436.4.2 透视投影n若连接abc及abc,它们的连线汇聚于一点。n实际上,ABC与ABC的连线是两条互相平行的直线,这说明空间任何一束不平行于投影平面的平行线的投影将汇聚在一点,即abc与abc的连线,必交于一点,这点我们称之为灭点。EABCABCacbcba446.4.2 透视投影456.4.2 透视投影n主灭点:平行于坐标轴的平行线产生的灭点。n主灭点数是和投影平面切割坐标轴的数量相对应的。n若投影平面仅切割z轴,则z轴是投影平面的法线。平行于xy平面的直线也平行于投影平面,因而没有灭点,所以只在z轴上有一个主灭点。yxzo466.4.2 透视投影 一点透视n透视投影的视线是从视点(观察点)出发,视线是不平行的,透视投影按照主灭点的个数分为一点透视,两点透视和三点透视。zxyEn人眼从正面去观察一个立方体,当z轴与投影平面垂直时,另两根轴ox,oy轴平行于投影平面。这时的立方体透视图只有一个灭点,即与投影面垂直的那组平行线的透视投影交于一点。476.4.2 透视投影 两点透视n人眼观看的立方体是绕y轴旋转一个角度之后,再进行透视投影。三坐标轴中oy轴与投影平面平行,这时除平行于oy轴的那组平行线外,其它两组平行线的透视投影分别在投影平面的左右两侧,作出的立方体透视图产生两个主灭点。zxyE486.4.2 透视投影 三点透视n投影平面与三坐标轴均不平行。n这时的三组平行线均产生主灭点。zxyE491.一点透视n假设投影中心为原点,投影面平行于xy平面,方程为z=D。n设物体上一点 P(x1,y1,z1),它的投影点为P(x,y,z),则z=D。n投影线的方程为:把z=D代入的,得 t =D/z1,则:xyDzPP501.一点透视n若D固定,z1,则x,y;即对象越远,成像越小。n若视点取无穷远(D=)时,则:x=x1,y=y1,此时,透视投影变为正平行投影。Doxzz1P(x,y,z)P(x1,y1,z1)投影面Doyzz1P(x,y,z)P(x1,y1,z1)投影面xyDzPP511.一点透视n由上面分析,一点透视投影的变换矩阵为:xyDzPPn主灭点?526.4.2 透视投影n在变换矩阵中,第四行的p,q,r起透视变换作用;n当p、q、r中有一个不为0时即为一点透视投影。n当p、q、r中有两个不为0时的透视变换即为二点透视变换。n若p、q、r都不为0,则可得到有三个灭点的三点透视。zxyEn旋转物体,获得两点、三点透视图。536.4.2 透视投影n具有真实感。n与投影面不平行的平面中,线条的平行关系、长度、及角度会发生改变。546.4.2 透视投影透视投影的技巧n在生成一点透视图时,为了避免将物体安置在坐标系原点,而产生左图所示的透视效果,通常在透视变换前,先将立体作一平移变换。n对于两点或三点透视,也可利用平移、旋转等操作来获得较好的投影效果。556.4 投影变换6.4.1 概 述 6.4.2 透视投影6.4.3 平行投影平行投影56平面几何投影透视投影平行投影一点透视三点透视二点透视正投影斜投影三视图斜等侧正轴侧斜二侧等轴侧正三侧正二侧投影中心与投影平面之间的距离投影方向与投影平面的夹角投影平面与坐标轴的夹角平面几何投影分类平面几何投影分类576.4.3 平行投影n根据投影线是否垂直于投影平面,平行投影可分为:n正平行投影n三视图n正轴侧投影n斜平行投影n斜等侧n斜二侧顶视图侧视图正视图XYZ581.正平行投影 三视图n正平行投影:投影方向垂直于投影平面时称为正平行投影。n三视图n正轴侧投影zyxa2c2b2a1b1c1n三视图:三个投影面和坐标轴相互垂直。n三视图的生成就是把x、y、z 坐标系下的形体投影到x=0,y=0,z=0的平面,一般还需将三视图在一个平面上画出(再变换到u、v、w 坐标系)。591.正平行投影 三视图n变换矩阵:正视图(y方向)zyyxouzyyxoovtztztxtxtyty(a,b)zyxa2c2b2a1b1c1601.正平行投影 三视图n变换矩阵:顶视图(z方向)zyyxouzyyxoovtztztxtxtyty(a,b)zyxa2c2b2a1b1c1611.正平行投影 三视图n变换矩阵:侧视图(x方向)zyyxouzyyxoovtztztxtxtyty(a,b)zyxa2c2b2a1b1c1621.正平行投影 三视图n优点:保留了长度、角度。及物体的形状。n缺点:没有立体感。(丢失了许多面的信息)631.正平行投影 正轴侧投影n当投影方向不取坐标轴方向,投影平面不垂直于坐标轴时,产生的正投影称为正轴测投影。n正轴测投影分类:正等侧、正二侧、正三侧。n正等侧:投影平面与三个坐标轴的交点到坐标原点的距离都相等。沿三个轴线具有相同的变形系数。641.正平行投影 正轴侧投影n正二测:投影平面与两个坐标轴的交点到坐标原点的距离都相等。沿两个轴线具有相同的变形系数。651.正平行投影 正轴侧投影n正三测:投影平面与三个坐标轴的交点到坐标原点的距离都不相等。沿三个轴线具有各不相同的变形系数。661.正平行投影 正轴侧投影n如何获得正轴侧投影的变换矩阵?n利用三视图。先将物体绕坐标轴旋转,再沿z轴方向进行投影。zxy671.正平行投影 正轴侧投影n由于这种投影的投影平面不与立体的轴线垂直,同时可见到物体的多个面,因而可产生立体效果。n经过正轴侧投影变换后,物体线间的平行性不变,但角度有变化。线条比例发生变化。n真实感差。(没有远小近大的效果)682.斜平行投影n如果投影方向不垂直于投影平面,则称为斜平行投影。n斜等侧:投影平面与一坐标轴垂直;投影线与投影平面成45角。与投影平面垂直的线投影后长度不变。n斜二侧:投影平面与一坐标轴垂直;投影线与该轴夹角成 arcctg(1/2)角。该轴轴向变形系数为。即与投影平面垂直的线投影后长度变为原来的一半。yzx(xs,ys)(x,y,z)(xp,yp,zp)n通过不同角度强调物体的某一面。n在斜平行投影中,投影平面一般取坐标平面。69第6章 图形变换6.1 变换的数学基础6.2 几何变换6.3 坐标变换6.4 投影变换6.5 图形的显示流程图形的显示流程6.6 三维裁剪706.5 图形的显示流程6.5.1 概述概述6.5.2 视变换6.5.3 三维裁剪6.5.4 透视投影6.5.5 窗口视区变换 716.5.1 概述n前面我们推导了各种经典视图的投影变换矩阵。n如何通过计算机构建虚拟场景,并生成投影图?n前面的推导中,物体和相机在同一个坐标系中定义;n如果需要多角度观察物体,每次都需要重新推导变换矩阵,太复杂!n将物体和相机用各自的坐标系定义(将对象和观察者分离),利用坐标系的变换来生成不同的投影视图。726.5.1 概述n在xoy坐标系(世界坐标系)中建立场景;n根据需要,建立一个视坐标系(观察坐标系);n显示过程主要就是将场景中的物体从世界坐标系变换到视坐标系,然后再投影到视平面。uVPNvcopuVPNvVRPzxoy736.5 图形的显示流程6.5.1 概述6.5.2 视变换视变换6.5.3窗口视区变换746.5.2 视变换 相关参数n相机定位;756.5 图形的显示流程6.5.1 概述6.5.2 视变换6.5.3 窗口视区变换窗口视区变换766.5.5 窗口视区变换n窗口(Window):在WC中定义的一个(矩形)区域,该区域内的对象将予以显示。n视区(Viewport):在DC中定义一个(矩形)区域,所有在窗口内的对象都将显示在该区域中。视线方向中心zxy776.5.5 窗口视区变换对图形的描述、图形的输入输出都是在坐标系中进行的。n1.世界坐标系 WC(World Coordinate System):包括常用的直角坐标系、几何坐标系等各种坐标系,用来直接描述对象。或称为用户坐标系UC(User Coordinate System),取值范围为整个实数域。n2.设备坐标系 DC(Device Coordinate System):图形的显示是在设备上进行的,在设备上描述图形的坐标系称为设备坐标系 DC(Device Coordinate System),取值范围受设备的输入输出 的精度以及画面有效范围的限制。屏幕上显示的图形均以其一个像素点单位为量化单位。786.5.5 窗口视区变换对图形的描述、图形的输入输出都是在坐标系中进行的。n3.规范化坐标系 NC(Normalization Coordinate System):二维,取值范围0,1。n4.不同坐标系的转换:将世界坐标系中的对象转换成设备坐标系中的图形有两种方式:n直接转换。容易实现,可移植性较差。n规范化坐标系。W CW CN CN CD CD C软件支持软件支持显示驱动程序显示驱动程序79(Xvmin,Yvmin)(Xvmax,Yvmax)0 xy(Xwmax,Ywmax)(Xwmin,Ywmin)6.5.5 窗口视区变换806.5.5 窗口视区变换816.5.5 窗口视区变换n选择不同的Window,显示在同一Viewport中:n窗口位置不同,显示出不同的图形;n窗口位置不变,只变大小,出现变焦效果;n选择不同的Window,显示在不同Viewport中,显示图形有个调度问题。n如果Window的X:Y与Viewport的X:Y不等时,图形将变形。826.5 三维图形的显示流程 用三维世界坐标系定义物体模型变换把物体变换到观察坐标系,原点为观察者,观察方向为Z轴视变换 截取视体积,执行三维剪取剪 取 执行投影,把三维物体投影到视平面上投影变换窗口内图像变换到屏幕坐标系加以显示窗口视区变换何时裁剪?836.5 三维图形的显示流程n何时裁剪?n投影之前裁剪:三维裁剪n优点:只对可见的物体进行投影变换n缺点:三维裁剪相对复杂n投影之后裁剪:二维裁剪n优点:二维裁剪相对容易n缺点:需要对所有的物体进行投影变换846.5 三维图形的显示流程n在投影之前裁剪的理由:n三维物体的表面通常被离散表示成多边形或折线,而对这类简单图元,三维裁剪同样比较简单。n三维物体在显示过程中需要被消隐,做这个工作要有物体的深度信息,所以必须在投影之前完成。消隐很费时,如果在此之前裁剪(或部分裁剪)掉不可见的图形,可使需要消隐的图形减至最小。85第第6章章 图形变换图形变换结束!86