第5章观察变换和裁剪.ppt

上传人:本田雅阁 文档编号:2980024 上传时间:2019-06-17 格式:PPT 页数:184 大小:1.80MB
返回 下载 相关 举报
第5章观察变换和裁剪.ppt_第1页
第1页 / 共184页
第5章观察变换和裁剪.ppt_第2页
第2页 / 共184页
第5章观察变换和裁剪.ppt_第3页
第3页 / 共184页
第5章观察变换和裁剪.ppt_第4页
第4页 / 共184页
第5章观察变换和裁剪.ppt_第5页
第5页 / 共184页
点击查看更多>>
资源描述

《第5章观察变换和裁剪.ppt》由会员分享,可在线阅读,更多相关《第5章观察变换和裁剪.ppt(184页珍藏版)》请在三一文库上搜索。

1、1,第5章 观察变换和裁剪,5.1 2维观察 5.2 二维图形裁剪 5.3 3维观察控制流程 5.4 观察坐标系及其变换 5.5 投影变换 5.6 观察体 5.7 三维裁剪,2,3,5.1 2维观察,用图形生成算法,结合几何变换方法在2维空间构造图形;然后通过图形物理设备(显示屏、绘图仪等)输出图形的过程, 称之为观察。 在有限幅面的屏幕坐标系中显示一张大幅面图形,会模糊不清达不到观察的目的;反之,假如只对整幅图形的某些局部感兴趣,就只需输出该图的局部内容供观察。,4,明确在世界坐标系中的哪部分区域需要被观察输出,这部分内容又将在显示屏坐标系中的哪个范围显示,这是观察变换问题。,坐标系是建立图

2、形与数之间对应联系的参考系。,5.1.1 坐标系,计算机图形学中对象的定义及其输入输出都在一定的坐标系下进行。同一对象在观察过程的不同阶段需用不同的坐标系描述,以提高处理效率,方便用户理解。,5, 又称笛卡尔坐标系, 是最常用的坐标系。在3维空间中, 直角坐标系分左手坐标系和右手坐标系。,1. 直角坐标系,仿射坐标系:坐标轴之间不垂直,圆柱坐标系,球坐标系,极坐标系,6,WC是与物理设备无关,描述自然界对象时所用的右手直角坐标系。其取值范围是整个实数域。,2. 世界坐标系( World Coordinate System),用户坐标系( User Coordinate System),若由用户

3、自行确定世界坐标系的取值范围描述对象时,世界坐标系又称为用户坐标系。 用户坐标系的取值范围是整个实数域的某个子域,也可以是整个实数域。,7, VC是与物理设备无关的,用于设置观察窗口观察和描述用户感兴趣的区域内部分对象,其取值范围由用户确定。 观察坐标系采用左手直角坐标系, 可以在用户坐标系中的任何位置、任何方向定义。其中有一坐标轴与 观察方向重合同向并与观察平面垂直。 (如图4-6表示世界坐标系与观察坐标系之间的关系。),3. 观察坐标系(Viewing Coordinate System),8, 设备坐标系(DC)是与具体物理设备相关,用于指定输出图形的窗口或视区。 设备坐标系常采用左手直

4、角坐标系;其取值范围受设备的输入输出精度和有效幅面的限制,是某个整数域。,4. 设备坐标系( Device Coordinate System),造型坐标系MC:Modeling Coordinate System 右手系,直角坐标系。对于定义的每个形体或图素都有各自的坐标原点和长度单位,这样可以方便形体和图素的定义。局部坐标系( local coordinate ),9,5. 规范化设备坐标系( Normalized Device Coordinate System ),规范化设备坐标系(NDC)是与具体的物理设备无关的一种坐标系,用于定义视区,描述来自世界坐标系中窗口内对象的图形,取值范围

5、约定为的正方形域。 由NDC表示的图形在任何的DC中都能处于相同的相对位置。正是NDC的描述,提高了相关程序的可移植性。,10,是指将世界坐标系定义的2维对象最终在设备坐标系中显示的整个过程。,5.1.2 2维观察控制流程,窗口 在世界坐标系中由用户指定的一个区域; 用来指定要显示的图形。,视区 在设备坐标系(屏幕)上指定的区域; 用来指定窗口内的图形在屏幕上显示的大小及位置。,11,矩形是最常用的窗口和视区。,观察变换:将定义在世界坐标系中窗口区域内的图形变换到设备坐标系中,并在指定视区内显示的过程。 在2维空间中的观察变换又称为窗口视区变换。,12,2D观察控制流程:,WC:定义 2D对象

6、,WC 到VC变换,VC:窗口 裁剪,NDC到DC变换,DC: 2D图形显示,13,5.1.3 WC到VC的变换,是指将对象描述从世界坐标系变换到观察坐标系的过程。,14,4.2.3 WC到VC的变换,分两步: 1) 平移观察坐标系的坐标原点,与世界坐标系的 原点重合; 2) 将xe、ye轴分别旋转(-)角与xw、yw轴重合。,1 0 0 cos -sin 0 = 1 0 0 T= sin cos 0 -x0 -y0 1 0 0 1,WC到VC的变换总矩阵为 T=T,15,窗口位置为 (xwmin,ywmin)和 (xwmax,ywmax); 视区位置为(xvmin,yvmin)、(xvmax

7、,yvmax)。 窗口到视区的映射原则:对同一对象,在窗口与视区中应具有相同的相对位置,两者不变形。窗口中的物点P(xw,yw)与视区中的像点P(xv,yv)之间满足:,5.1.4 窗口到视区变换,P点到窗口左边界距离/窗口宽度=点到视区左边界距离/视区宽度,P点到窗口下边界距离/窗口高度= P点到视区下边界距离/视区高度,16,17,得视区像点P的坐标为 xv=xvmin+sx(xw-xwmin) yv=yvmin+sy(yw-ywmin) (4-10) 其中 sx= (xvmax-xvmin)/(xwmax-xwmin) sy= (yvmax-yvmin)/(ywmax-ywmin) (4

8、-11) sx、sy分别为x和y方向上的比例因子。,18,改变窗口、视区大小,在视区内得到大小变化、位置不同的像.,改变视区大小可改变输出对象的大小和位置;如果视区大小不变,窗口扩大,像缩小,窗口缩小、像放大;若视区为全屏,窗口内容将满屏显示。,改变视区位置可获得不同显示位置的输出对象;不在窗口区域内的内容不会在视区内出现。,如果sx=sy, 窗口的宽/高视区的宽/高,物与像形状相似,像不产生畸变; 否则产生畸变。,如果xvmin=yvmin=0,xvmax=yvmax=1,则窗口到视区的变换将独立于输出设备。,19,5.1.5 规范化设备坐标系 到设备坐标系的变换,规范化坐标系(0,0)(1

9、,1), 映射到设备坐标系(0,0)( n , m )。,NDC,DC,(xNDC,yNDC),(xDC,yDC),(Dx,Dy),(dx,dy),20,若n:m不等于1,DC中输出的图形将产生变形。,如何解决?,21,定义窗口 void gluOrtho2D( GLdouble left, GLdouble right, GLdouble bottom, Ldouble top ); left, right The coordinates for the left and right vertical clipping planes. bottom, top The coordinates

10、for the bottom and top horizontal clipping planes. 定义视区 glViewport(GLint x,GLint y,GLsizei width, GLsizei height); 这个函数定义一个视口。函数参数(x, y)是视口在屏幕窗口坐标系中的左下角点坐标,参数width和height分别是视口的宽度和高度。缺省时,参数值即(0, 0, winWidth, winHeight) 指的是屏幕窗口的实际尺寸大小。所有这些值都是以象素为单位,全为整型数,22,SetupViewport( cx, cy ); m_width = cx; m_hei

11、ght = cy; glMatrixMode ( GL_PROJECTION ); glLoadIdentity (); if(m_width = m_height) glOrtho2D( xMin, xMax, yMin *(GLdouble)(GLdouble)m_height/(GLdouble)m_width), yMax*(GLdouble)(GLdouble)m_height/(GLdouble)m_width); Else glOrtho2D ( xMin* (GLdouble)(GLdouble)m_width/(GLdouble)m_height),xMax* (GLdoub

12、le) (GLdouble)m_width/(GLdouble)m_height), yMin, yMax,); glMatrixMode( GL_MODELVIEW ); glLoadIdentity();,23,5.2 二维图形裁剪,裁剪: 按指定大小和位置开窗口,确定图形在窗口内的予以显示,在窗口外的不予显示的操作。,裁剪实质: 确定图形中哪些图元在窗口内。,裁剪操作基本任务:图元在窗口内外的判断;图元与窗口边界相交时的求交计算。,裁剪处理的速度是衡量裁剪算法性能的重要指标。,24,5.2.1 点的裁剪,设矩形窗口左下角点坐标为(x,y),右上角点坐标为(x,y),图形中的任意一点(x,

13、y)若满足条件: xxx yyy (4-18) 则,该点在窗内应为可见被显示;否则不可见被裁剪掉。,25,5.2.2 直线段裁剪 1. 直线段与窗口的相对位置,与凸多边形窗口相交的任何直线段最多只有一段处于其边界内。 线段与窗口的三种相对位置关系:完全不可见、完全可见和部分可见。,26,直线段两端点与窗口的各种位置关系,1) 两端点均在窗口内(A);直接判断完全可见。 2) 两端点均在窗口边界线外同侧 (B和C);直接判断出完全不可见。,3) 一端点在窗口内,另一个在窗口外(D);计算交点 S,S内侧线段为可见,另一侧线段不显示。,27,4) 两端点均在窗口外,但不在窗口边界线外同侧 (E、F

14、);与窗口边界求交,分两种情形:, 两交点均处于窗口有效边界上(E),两交点间的线段S12为可见,其余两侧的线段舍弃;, 两交点均在窗口有效边界外(F),完全不可见, 舍弃。,28,直线段裁剪算法 Cohen-Sutherland算法(编码裁剪法),用四条窗口边界线把整个平面分成九个区域,每个区域用一个四位二进制代码表示。 每条线段按其端点所在区域的代码标识它相对于窗口的位置属于哪种类型,确定对该线段是否裁剪。,29,四位代码CTCBCRCL含义如下: CL=1(端点在XL左); =0(端点在XL右) CR=1(端点在XR右); =0(端点在XR左) CB=1(端点在YB下); =0(端点在Y

15、B上) CT=1(端点在YT上); =0(端点在YT下),XL,XR,YT,YB,30,此图六条线段的端点代码特征与可见性的关系,如下表所示。,31,C1、2分别为线段端点代码, code为C1与C2的逻辑乘。 线段 C1 C2 code 特 征 结果说明 A 0000 0000 0000 C1=C2=code=0000 完全在窗内, 全接受 B10001000 1000 完全在窗外同侧, C 1001 0001 0001 code0000 全不可见,舍弃 D 0001 0000 0000 C1、C2之一:0000 有一交点,部分可见 E/F 0010 01000000 C1与C2均0000

16、线段与窗口边界有 且code=0000 两交点,可见性不定,32,1. 求出线段两端点P1 和P2 的编码C1 和C2 ; 2. 若C1 和C2 的按位“与”不等于0,P1 和P2 必定在某 条边的外侧,P1P2不可见。结束。 3. 若C1 和C2 的按位“或”等于0,P1P2全部可见。结束。 4. 否则必然有一个端点在矩形外部,令该点为P1。 5. P1在哪条边界线外部,就求出该边界与P1P2的交点 P,舍掉P1P部分,把交点P作为剩余线段的P1点。 6. 重复上述过程15,直到结束。,编码裁剪算法思路:,裁剪一条直线段的Cohen-Sutherland算法如图4-14 .,33,编码裁剪算

17、法: define LEFT 1 /*0001*/ #define RIGHT 2 /*0010*/ #define BOTTOM 4 /*0100*/ #define TOP 8 /*1000*/ encode(x,y,code) float x,y; int* code; int c; c=0; if(xXL)c=c|LEFT;,34,else if (xXR)c=c|RIGHT; if(yYT)c=c|TOP; *code=c; return; C_S_LineCLip(x1,y1,x2,y2,XL,XR,YB,YT) float x1,y1,x2,y2, XL,XR,YB,YT; in

18、t code1,code2,code; encode(x1,y1,35,while(code10|code20) if(code1 else if(RIGHT&code0),36, x=XR; y=y1+(y2-y1)*(XR-x1)/(x2-x1); else if(BOTTOM x=x1+(x2-x1)*(YT-y1)/(y2-y1) ,37,if(code=code1) x1=x,y1=y; encode(x,y,code1); else x2=x,y2=y,encode(x,y,code2); displayline(x1,y1,x2,y2); return; ,38,39,基本思想是

19、: 运用C-S算法中直线段端点编码和线段检测方法,首先识别直接接受的完全可见线段和直接舍弃的完全不可见线段;对于不能立即识别可见性的线段,将线段中分为两段,并对该两段再分别重复上述测试,直到原来线段的子段完全在窗内被直接接受,或完全在窗口外直接舍弃。,中点分割裁剪算法,40,P2,P1,A1,A2,Am,Pm,S1,S2,41,大意:首先对线段端点进行编码,并把线段与窗口的关系分为三种情况: 全在、完全不在、线段和窗口有交。 对前两种情况,与C-S算法一样处理。 对于情况三,用中点分割方法将线段中分为两段,看是否归到前两种情况? 若不是,求出线段与窗口的交点:从P1点出发找出距P1最近可见点S

20、1;从P2点出发找出距P2最近可见点S2,两个可见点之间的连线即为线段P1P2的可见部分。,中点分割裁剪算法,42,从p1出发找最近可见点的中点分割法:先求出p1p2的中点pm,若p1pm不是显然不可见,并且p1p2在窗口中有可见部分,则距p1最近的可见点一定落在p1pm上,所以用p1pm代替p1p2;否则取pmp2代替p1p2。再对新的p1p2求中点pm。重复上述过程,直到pmp2长度小于给定的控制常数为止,此时pm收敛于交点。,P2,P1,Pm,S1,S2,43,求端点P1、P2编码code1、code2,code1code2=0?,code1=code2=0?,code1=0?,Pm=(

21、P1+P2)/2,|PmP2|e ?,P1Pm显然不可见?,P2=Pm,P1=Pm,P1P2全可见,P1可见,P=P1,P=Pm,P1P2全不可见,退出,N,Y,Y,Y,Y,N,N,N,N,Y,44,该算法的主要计算过程只用到加法和除2运算,所以特别适合硬件实现,同时也适合于并行计算。,45,Cyrus-Beck算法是典型的一种。可用非矩形的凸多边形窗口裁剪 2 维线段,用凸多面体裁剪 3 维线段。 Cyrus-Beck算法是基于向量点积原理判断线段端点的区域、计算交点的。,Cyrus-Beck参数裁剪算法,窗口一边界与线段P1P2的相交情况:边界Ei,内法矢 Ni,其上任意点fi。 线段P1

22、P2的参数方程: P(t)=P1+(P2- P1)t,46,直线P1P2,两端点座标为P1(1,1),P2(9,3),对一个矩形区域内的裁剪。,P1P2方程:,参数方程:,内法矢:i,-i,j,-j(左右下上),左边界,取f(0,0), nL=i,47,t1/10,右边界:f(8,4)nR=i,t9/10,下边界:f(0,0), nB=j,t1/2,上边界:f(8,4), nT=j,t3/2,48,49,50,若交换P3、P4的位置,将导出显示窗口完全位于线段左侧的结论,因此,在作出线段不可见的结论时,被裁剪线段方向是重要的。,51,52,Cyrus-Beck参数化裁剪算法,Cyrus-Bec

23、k算法是典型的一种。可用非矩形的凸多边形窗口裁剪 2 维线段,用凸多面体裁剪 3 维线段。 Cyrus-Beck算法是基于向量点积原理判断线段端点的区域、计算交点的。,窗口一边界与线段P1P2的相交情况: 边界Ei,内法矢 Ni,其上任意点fi。 线段P1P2的参数方程: P(t)=P1+(P2- P1)t,53,fi到P1P2的向量为 (P(t)- fi),与边界 Ei的内法矢 Ni的点积 Ni (P(t)- fi) 有三种可能:,式中分母不为0:1) Ni 不可能为0向量; 2)若P1、P2重合,可简单处理; 3)若Ni (P2- P1),P1P2/Ei,无交点。,P(t)=P1+(P2-

24、 P1)t,54,线段与边界线 Ei 的交点满足: 0 t 1 但其中有有效交点和无效交点。,有效交点的确定: 进入交点PE( Ni (P2- P1)0) 离开交点PL( Ni (P2- P1)0),最后交点对(PE,PL) 交点参数 tE、tL 满足:,靠近直线的终点,靠近直线的起点,55,交点对(PE,PL): PE=P(tE),PL=P(tL), 合理性: tE tL 如果tEtL,则线段完全落在裁剪窗口之外。,56,57,梁友栋和Barskey提出的参数化裁剪算法。首先按参数化形式写出裁剪矩形的裁剪条件: 这四个不等式可以表示为形式: 其中,参数pk,qk定义为: 任何平行于裁剪边界之

25、一的直线pk=0,k=1,2,3,4对应于左、右、下、上裁剪边界;如果qk0,则线段完全在边界外,舍弃。如果qk0,则该线段在窗口内,与裁剪边界平行。,梁友栋Barskey算法,t,58,当qk0, P1位于第k条边的内侧,可见部分 当qk0,线段与边界的交点的t值:t=qk/pk.,q1x1-xLx1 q2xR-x1xR q3y1-yBy1 q4yT-y1yT,59,对于每条直线,可以计算出定义裁剪矩形内线段部分的参数 te、tl 。 te的值由线段从外到内遇到的矩形边界所决定(p0)。对这些边界计算tk=qk/pk 。tl=min0,tk。 取te tl时的线段,否则完全落在裁剪窗口之外。

26、,pk0,线段从内到外,p1x1-x2xLx1 p2x2-x1xR x2 p3y1-y2 yBy1 p4y2-y1yT y2,60,3. 多边形裁剪算法,多边形裁剪:等价于直线段逐段裁剪的组合? 问题:1)边界不再封闭,需要用窗口边界的恰当部分来封闭它,如何确定其边界?,61,2)一个凹多边形可能被裁剪成几个小多边形,如何 确定这些小多边形的边界?,62,Sutherland-Hodgman算法 (逐边裁剪算法),算法基本思想: 逐边裁剪、两次分解、流水线作业.首先将多边形对于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪,其次,将多边形对一条直线的裁剪分解为各边对直线的裁剪。 亦称逐边

27、裁剪算法.,63,考虑窗口的一条边以及延长线构成的裁剪线 ,把平面分成:含窗口可见一侧;不可见一侧。,依序考虑多边形的各条边的两端点S、P。它们与裁剪边界有四种位置关系:(1)S,P均在可见侧(2)S可见,P不可见(3)S,P均在不可见侧 (4)S不可见,P可见。,64,每条线段端点S、P与裁剪线比较后,可输出0至2 个顶点:情况(1)仅输出终点 P; 情况(2)输出线段 SP 与裁剪线的交点 I; 情况(3)输出 0 个顶点; 情况(4)输出线段 SP与裁剪线的交点 I和终点 P。,上述算法仅用一条裁剪边对多边形进行裁剪,得到 一个顶点序列,作为下一条裁剪边处理过程的输入。,65,66,67

28、,裁剪结果的顶点构成:裁剪边内侧的原顶点;多 边形的边与裁剪边的交点。 顺序连接。,几点说明: 裁剪算法采用流水线方式,适合硬件实现。 可推广到任意凸多边形裁剪窗口.,68,裁剪窗口可以为任意多边形,规定 主多边形:被裁剪多边形,记为A 裁剪多边形:裁剪窗口,记为B 多边形顶点的排列顺序:使多边形区域位于有向边的左侧 。 外环(逆时针)、内环(顺时针) 内裁剪结果:A B 外裁剪结果:A-B,Weiler-Atherton 算法 (双边裁剪算法),69,裁剪结果区域的边界由A的部分边界和B的部分边界两部分构成,并且在交点处边界发生交替,即由A的边界转至B的边界,或由B的边界转至A的边界。,70

29、,两类交点: 入点-沿主多边形边界由此进入裁剪多边形内 出点-沿主多边形边界由此离开裁剪多边形区域 特点:入点和出点成对出现。,Weiler_Athenton裁剪算法(内裁剪)步骤: 1、建立主多边形和裁剪多边形的顶点环表; 2、求主多边形和裁剪多边形的交点,建立入点表和出点表;并将这些交点按顺序插入两多边形的顶点环表。在两多边形顶点环表中的相同交点间建立双向指针; 3、裁剪过程:,71,1)建立裁剪结果多边形的顶点表; 2)依次选取入点表中的一个入点,检测其是否被处理过?是,取下一个入点,直至入点表中的入点全被处理过,结束; 3)沿主多边形顶点环表正向搜索,将搜索到的主多边形顶点记入裁剪结果

30、多边形的顶点表中,直至下一个交点(出点); 4)按该交点的双向指针,搜索路径由主多边形转入裁剪多边形; 5)沿裁剪多边形顶点环表正向搜索,将搜索到的裁剪多边形顶点记入裁剪结果多边形顶点表中,直至下一个交点(入点);检测该入点是否与开始入点相同?相同,转2); 6)按该交点的双向指针,搜索路径又由裁剪多边形回到主多边形;转3)。,72,1、建立主多边形和裁剪多边形的顶点环表;,S1 S2 S3 S4 S5 S6 S7 S1,C1 C2 C3 C4 C1,S1,S2,S3,S4,S5,S6,S7,C1,C2,C3,C4,I1,I2,I3,I4,I5,I6,I7,I8,主,裁,73,2、求主多边形和

31、裁剪多边形的交点, 建立入点表和出点表;并将这些交点 按顺序插入两多边形的顶点环表。在 两多边形顶点环表中的相同交点间建 立双向指针;,I2 I4 I6 I8,I1 I3 I5 I7,主,裁,入,出,74,主,裁,I2 I4 I6 I8,I1 I3 I5 I7,入,出,75,I1 I3,I2 I4,入,出,S1 S2 S3 S4 S5 I1 S6 I2 S7 S8 S9 I3 I4 S1,C1 I3 C2 I2 C3 I1 C4 I4 C1,主,裁,76,出点:I0,I2, I4, I6, I8, I10,入点:I1,I3, I5, I7, I9, I11,例1,77,78,79,例2,入点表

32、:I1,I3,I5 出点表:I2,I4,I6,80,主多边形环表:,W1,W2,W3,I2,W4,I5,I4,W5,W6,I3,I6,I1,W1,裁剪多边形环表,入点表:I1,I3,I5 出点表:I2,I4,I6,81,主多边形环表:,W1,W2,W3,I2,W4,I5,I4,W5,W6,I3,I6,I1,W1,裁剪多边形环表,入点表:I1,I3,I5 出点表:I2,I4,I6,82,交点的奇异情况处理,1、与裁剪多边形边重合的主多边形的边不参与求交点; 2、对于顶点落在裁剪多边形的边上的主多边的边,如果落在该裁剪边的内侧,将该顶点算作交点;而如果这条边落在该裁剪边的外侧,将该顶点不看作交点,

33、83,4. 字符裁剪,字符和文本部分在窗内、部分在窗外时,就出现字符裁剪问题。,字符裁剪按三个精度进行:串精度、字符精度、以及笔画象素精度。,串精度裁剪:将包围字串的外接矩形对窗口作裁剪。当字符串方框整个在窗口内时予以显示,否则不显示。,84,字符精度裁剪:将包围字的外接矩形对窗口作裁剪,某个字符方框整个落在窗口内予以显示,否则不显示。,85,笔画象素精度裁剪:将矢量字符的笔划分解成直线段对窗口作裁剪;将点阵字符的像素相对窗口边界作取舍。,86,5.3 3维观察控制流程 1. 定义,把世界坐标系描述的3维景物对象最终变换到计算机图形输出设备坐标系中,生成3维景物的视图(像)的整个过程。,87,

34、2. 3维观察过程,88,类比照像机拍摄景物的过程,拍摄过程 选景 取景-裁剪 对焦参考点 按快门-成像 移动方式 移动景物 移动照相机 两个坐标系,89,简单的三维图形显示流程图,90,3. 3维观察控制流程,WC:描述 3D景物,WC 到VC变换,VC:定义观察体、规范化裁剪空间,NDC到DC窗口视区变换,DC: 景物视图显示,NVC: 规范化裁剪空间裁剪,MC到WC变换,MC:模型描述,91,5.4 观察坐标系及其变换 1. 观察坐标系定义,观察坐标系(View Reference Coordinate或VRC) 照相机所在的坐标系 如何建立观察坐标系 坐标原点-聚焦参考点在底片(投影平

35、面)上的投影, 称为观察参考点VRP(View Reference Point ) n 轴(N)-照相机镜头方向(投影平面的法向VPN) v 轴(V)-照相机向上的方向(代表观察正向VUP) u 轴(U)-,92,u、v、n 分别表示 U、V、N的单位向量,93,为什么采用观察坐标系? 摄像类比问题:移动舞台还是移动摄像机? 移动舞台:投影(摄像)简单; 移动难度大。 移动摄像机:移动容易;投影复杂。 采用了观察坐标系: 简化投影,加速投影变换 投影平面- n=0 投影中心- (0,0,d),94,2. WC 到 VC的变换,条件: VRC的坐标原点(观察参考点)VRP(XR,YR,ZR);

36、投影平面法向VPN; 观察正向VUP ;,(1)单位矢量法, u v n 1 = x y z 1 . TWtoV,95,TWtoV=TT .TR(X,Y,Z),=,96,(2)组合变换法,1) WC 原点O平移到视点E(m,n,l),T1=,97,2)Exyz坐标系转成左手坐标系,T2 =,98,3) Exyz新坐标系绕 x 顺时针旋转90 o,T3 =,99,4)Exyz新坐标系绕 y 顺时针旋转,cos=,dy,,,100,求得复合变换矩阵TWtoV为 TWtoVT1T2T3T4T5,xe ye ze 1x y z 1TWtoV,101,将3维景物对象变换成2维平面图形的过程。 投影是三维

37、对象表示的基本研究内容之一。 投影: 将n维的点变换成小于n维的点。 将3维的点变换成2维的点。,5.5 投影变换 一.投影分类,102,投影中心与投影平面之间的距离为有限,投影中心与投影平面之间的距离为无限,103,投影中心(COP:Center of Projection) 视觉系统观察点、视点;电影放映机光源 投影面 不经过投影中心;平面-照相机底片;曲面球幕电影视网膜,104,二.平行投影,正投影和斜投影,105,(1)三视图,106,107,(5-27),108,1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 -

38、m 1,1 0 0 0 0 cos(-90) sin(-90) 0 0 -sin(-90) cos(-90) 0 0 0 0 1,TH,(5-28),俯视图变换矩阵TH:向H面作正投影;将H面绕X轴顺时针旋转90;沿-Z方向平移距离m。,109,侧视图变换矩阵TW: TWT(x=0)*TRz(90)*TT(x=-l) 0 0 0 0 -1 0 0 0 0 0 1 0 -l 0 0 1 ,(5-29),110,2)先旋转后投影,TV 形式与结果均不变; TH=TRx(-90o). TV . TT(z=-m),结果不变; TW=TRz(90o). TV . TT(x=-l),结果不变。,111,(

39、2)正轴测投影,分正等测、正二测和正三测三种投影。 如图,当投影面与X、Y、Z轴之间的夹角都相等(即OX1OY1O1)时为正等测;,112,当OX、OY和OZ中有两个相等时为正二测;当OX、OY和OZ均不等时为正三测。,113,如图,把空间对象先绕Y轴逆时针旋转角,再绕X轴顺时针旋转角,最后向XOY坐标平面作正投影,得到正轴测投影。,114,115,116,然后在Z坐标轴方向作正投影,得到正轴测投影的变换矩阵TAxon=TRyTRxTZ,117,1) 正等测投影 OA=OB=OC,118,119,2) 正二测投影 几何条件:两个轴向变形系数保持相等,第三个轴向变形系数在满足pqr2的条件下可任

40、取。,OA=OC,120,3) 正三测投影 几何条件:三条轴的轴向变形系数均不相等。其变换矩阵即为式(6-32)。,cos 0 -sinsin 0 -sin 0 -cossin 0 0 0 cos 0 0 0 0 1,Txon,(5-32),121,(3)斜轴测投影,122,如图6-13,设投影面为XOZ平面,投影方向与投影面的夹角为,投影线在XOZ平面上的投影与X轴的夹角为。空间点P(x,y,z)在投影面上的斜投影为P(x,0,z),正投影为P(x,z)。,123,任意点的斜投影坐标为:,xxyctgcos y (5-4) zzyctgsin,(5-42),124,若,斜轴测投影的投影方向与

41、投影面成45角,即斜等测投影。 若投影方向与投影面之间的夹角为arctg(2)时,得到的是斜二测投影;此时,与投影面垂直的直线将投影成一半长度。 若,L,此时的斜轴测投影已转化为正投影。 为了同时反映对象在三个方向上的形状,通常取为45或30。,125,三. 透视投影,投影中心与投影平面之间的距离为有限 参数:投影方向,d 例子:室内白炽灯的投影,视觉系统 灭点:不平行于投影平面的平行线,经过透视 投影之后收敛于一点,称为灭点.,126,主灭点:平行于坐标轴的平行线在投影面上的灭点。 主灭点数最多有三个。 若某坐标轴与投影面垂直,则只有一个主灭点, 且在该坐标轴上。 按主灭点个数,透视投影分为

42、: 一点透视 两点透视 三点透视,127,128,特点:产生近大远小的视觉效果,由它产生的图形深度感强,看起来更加真实。,129, XS YS ZS H = xe ye ze 1 . TPer,(1) 点的透视投影,130,H = ze/d , r = 1/d,灭点在(0,0,1/r),视点在原点,投影面垂直于Z轴的透视变换矩阵:,131, q = 1/d,灭点在(0,1/q,0), p = 1/d,灭点在(1/p,0, 0),视点在原点,投影面垂直于Y、X轴的透视:,132,两点透视、三点透视的变换矩阵:,133,(2) 物体对象的透视投影,形成步骤:,1) 在物体对象所在的WC中,建立以视

43、点为原点的观察坐标系OeXeYeZe(投影平面垂直Ze,观察方向与Ze重合)。,2)物体对象从WC转换到VC中描述。,3)在VC中,将物体对象旋转:绕两坐标轴转形成三点透视,绕一坐标轴转形成两点透视,一点透视不用旋转。,4)在VC中,将物体对象平移到适当位置。,5)作透视变换,并向投影面投影。,134,1)2)步后面会专门讲解。物体经3)5)步的变换矩阵为:,TPer-ob=Tye(). Txe( ). TT . TPerz . T(zs=d),(5-50),135,把(6-50)的透视投影再向XeOeYe平面作正投影(压缩):,(5-51),当 = =0, (6-51)的结果为一点透视变换矩

44、阵; 当、中只有一个 0 时,结果为两点透视变换矩阵; 当、均 0 时,结果为三点透视变换矩阵(6-51)。,136,5.6 观察体,观察体是三维裁剪窗口。观察窗口可在观察平面的任何位置,窗口中心CW可不与观察坐标系原点重合。,137,一、观察空间与观察体,观察空间是世界坐标系中的一个子空间,由经过观察窗口四条边的四个平面围成的。其大小决定于观察窗口大小。,透视投影的观察空间是顶点在投影中心COP(投影参考点PRP)、棱边通过窗口四个角点而没有底面的无限四棱锥。 平行投影的观察空间则是一个四条棱边平行于投影方向(从投影参考点PRP指向窗口中心CW)且通过窗口四个角点的、两端没有底面的无限长的方

45、管。,138,投影参考点PRP(Projection Reference Point) 透视投影:投影中心COP=投影参考点PRP 平行投影:投影方向DOP=窗口中心CW - PRP,139,观察空间内处于不同深度的景物都将投影在观察窗口内,引起投影重叠; 另一方面,靠近透视投影中心的物体对象的投影只有很小一部分在观察窗口内,而远离投影中心的物体对象在观察窗口内将投影成一个模糊的小点, 因此,必须采用有限的观察空间-观察体选取观察目标。,在投影中心COP的同一侧,沿投影方向DOP用平行于观察平面的前截面FP和后截面BP截取无限的观察空间,得到一个有限的六面体,称为观察体。,140,前、后截面的

46、区别由投影线按投影方向穿过截面的顺序决定。 透视投影的观察体为四棱台;平行投影的观察体是截面为矩形的棱柱。,141,COP(PRP),FP,BP,VRP,CW,观察体中心线,投影平面VP,透视投影过观察体中心线的截面图,142,FP,VP,BP,VRP,DOP,正投影观察体中心线的截面图,143,定义观察体参数,144,透视投影变换 问题-在uvn中,投影平面为n=0,投影中心为(0,0,d),待投影点为P,求投影点Q。,145,投影线的参数方程:,投影平面方程 n=0 Q点的坐标:,146,透视投影变换矩阵,147,平行投影变换 问题-在uvn中,投影平面为n=0,投影方向为(0,0,-1),待投影点为P,求投影点Q,148,投影线的参数方程,投影平面方程 n=0 Q点的坐标,149,平行投影变换矩阵,透视投影与平行投影之间的关系,150,二、投影举例,待投影的单位立方体,151,缺省投影参数,参数 值 投影类型 平行投影 VRP(WC) (0,0,0) VPN(WC) (0,0,1) VUP(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1