欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > PPT文档下载  

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

    • 资源ID:748031       资源大小:2.86MB        全文页数:183页
    • 资源格式: PPT        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    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,明确在世界坐标系中的哪部分区域需要被观察输出,这部分内容又将在显示屏坐标系中的哪个范围显示,这是观察变换问题。,坐标系是建立图形与数之间对应联系的参考系。,5.1.1 坐标系,计算机图形学中对象的定义及其输入输出都在一定的坐标系下进行。同一对象在观察过程的不同阶段需用不同的坐标系描述,以提高处理效率,方便用户理解。,5,又称笛卡尔坐标系,是最常用的坐标系。在3维空间中,直角坐标系分左手坐标系和右手坐标系。,1.直角坐标系,仿射坐标系:坐标轴之间不垂直,圆柱坐标系,球坐标系,极坐标系,6,WC是与物理设备无关,描述自然界对象时所用的右手直角坐标系。其取值范围是整个实数域。,2.世界坐标系(World Coordinate System),用户坐标系(User Coordinate System),若由用户自行确定世界坐标系的取值范围描述对象时,世界坐标系又称为用户坐标系。用户坐标系的取值范围是整个实数域的某个子域,也可以是整个实数域。,7,VC是与物理设备无关的,用于设置观察窗口观察和描述用户感兴趣的区域内部分对象,其取值范围由用户确定。观察坐标系采用左手直角坐标系,可以在用户坐标系中的任何位置、任何方向定义。其中有一坐标轴与 观察方向重合同向并与观察平面垂直。(如图4-6表示世界坐标系与观察坐标系之间的关系。),3.观察坐标系(Viewing Coordinate System),8,设备坐标系(DC)是与具体物理设备相关,用于指定输出图形的窗口或视区。设备坐标系常采用左手直角坐标系;其取值范围受设备的输入输出精度和有效幅面的限制,是某个整数域。,4.设备坐标系(Device Coordinate System),造型坐标系MC:Modeling Coordinate System右手系,直角坐标系。对于定义的每个形体或图素都有各自的坐标原点和长度单位,这样可以方便形体和图素的定义。局部坐标系(local coordinate),9,5.规范化设备坐标系(Normalized Device Coordinate System),规范化设备坐标系(NDC)是与具体的物理设备无关的一种坐标系,用于定义视区,描述来自世界坐标系中窗口内对象的图形,取值范围约定为的正方形域。由NDC表示的图形在任何的DC中都能处于相同的相对位置。正是NDC的描述,提高了相关程序的可移植性。,10,是指将世界坐标系定义的2维对象最终在设备坐标系中显示的整个过程。,5.1.2 2维观察控制流程,窗口在世界坐标系中由用户指定的一个区域;用来指定要显示的图形。,视区 在设备坐标系(屏幕)上指定的区域;用来指定窗口内的图形在屏幕上显示的大小及位置。,11,矩形是最常用的窗口和视区。,观察变换:将定义在世界坐标系中窗口区域内的图形变换到设备坐标系中,并在指定视区内显示的过程。在2维空间中的观察变换又称为窗口视区变换。,12,2D观察控制流程:,WC:定义 2D对象,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,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-11)sx、sy分别为x和y方向上的比例因子。,18,改变窗口、视区大小,在视区内得到大小变化、位置不同的像.,改变视区大小可改变输出对象的大小和位置;如果视区大小不变,窗口扩大,像缩小,窗口缩小、像放大;若视区为全屏,窗口内容将满屏显示。,改变视区位置可获得不同显示位置的输出对象;不在窗口区域内的内容不会在视区内出现。,如果sx=sy,窗口的宽/高视区的宽/高,物与像形状相似,像不产生畸变;否则产生畸变。,如果xvmin=yvmin=0,xvmax=yvmax=1,则窗口到视区的变换将独立于输出设备。,19,5.1.5 规范化设备坐标系到设备坐标系的变换,规范化坐标系(0,0)(1,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 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_height=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);ElseglOrtho2D(xMin*(GLdouble)(GLdouble)m_width/(GLdouble)m_height),xMax*(GLdouble)(GLdouble)m_width/(GLdouble)m_height),yMin,yMax,);glMatrixMode(GL_MODELVIEW);glLoadIdentity();,23,5.2 二维图形裁剪,裁剪:按指定大小和位置开窗口,确定图形在窗口内的予以显示,在窗口外的不予显示的操作。,裁剪实质:确定图形中哪些图元在窗口内。,裁剪操作基本任务:图元在窗口内外的判断;图元与窗口边界相交时的求交计算。,裁剪处理的速度是衡量裁剪算法性能的重要指标。,24,5.2.1 点的裁剪,设矩形窗口左下角点坐标为(x,y),右上角点坐标为(x,y),图形中的任意一点(x,y)若满足条件:xxx yyy(4-18)则,该点在窗内应为可见被显示;否则不可见被裁剪掉。,25,5.2.2 直线段裁剪 1.直线段与窗口的相对位置,与凸多边形窗口相交的任何直线段最多只有一段处于其边界内。线段与窗口的三种相对位置关系:完全不可见、完全可见和部分可见。,26,直线段两端点与窗口的各种位置关系,1)两端点均在窗口内(A);直接判断完全可见。2)两端点均在窗口边界线外同侧(B和C);直接判断出完全不可见。,3)一端点在窗口内,另一个在窗口外(D);计算交点 S,S内侧线段为可见,另一侧线段不显示。,27,4)两端点均在窗口外,但不在窗口边界线外同侧(E、F);与窗口边界求交,分两种情形:,两交点均处于窗口有效边界上(E),两交点间的线段S12为可见,其余两侧的线段舍弃;,两交点均在窗口有效边界外(F),完全不可见,舍弃。,28,直线段裁剪算法Cohen-Sutherland算法(编码裁剪法),用四条窗口边界线把整个平面分成九个区域,每个区域用一个四位二进制代码表示。每条线段按其端点所在区域的代码标识它相对于窗口的位置属于哪种类型,确定对该线段是否裁剪。,29,四位代码CTCBCRCL含义如下:CL=1(端点在XL左);=0(端点在XL右)CR=1(端点在XR右);=0(端点在XR左)CB=1(端点在YB下);=0(端点在YB上)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 线段与窗口边界有 且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,编码裁剪算法: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;int code1,code2,code;encode(x1,y1,35,while(code10|code20)if(code1else if(RIGHT&code0),36,x=XR;y=y1+(y2-y1)*(XR-x1)/(x2-x1);else if(BOTTOMx=x1+(x2-x1)*(YT-y1)/(y2-y1),37,if(code=code1)x1=x,y1=y;encode(x,y,code1);elsex2=x,y2=y,encode(x,y,code2);displayline(x1,y1,x2,y2);return;,38,基本思想是:运用C-S算法中直线段端点编码和线段检测方法,首先识别直接接受的完全可见线段和直接舍弃的完全不可见线段;对于不能立即识别可见性的线段,将线段中分为两段,并对该两段再分别重复上述测试,直到原来线段的子段完全在窗内被直接接受,或完全在窗口外直接舍弃。,中点分割裁剪算法,39,P2,P1,A1,A2,Am,Pm,S1,S2,40,大意:首先对线段端点进行编码,并把线段与窗口的关系分为三种情况:全在、完全不在、线段和窗口有交。对前两种情况,与C-S算法一样处理。对于情况三,用中点分割方法将线段中分为两段,看是否归到前两种情况?若不是,求出线段与窗口的交点:从P1点出发找出距P1最近可见点S1;从P2点出发找出距P2最近可见点S2,两个可见点之间的连线即为线段P1P2的可见部分。,中点分割裁剪算法,41,从p1出发找最近可见点的中点分割法:先求出p1p2的中点pm,若p1pm不是显然不可见,并且p1p2在窗口中有可见部分,则距p1最近的可见点一定落在p1pm上,所以用p1pm代替p1p2;否则取pmp2代替p1p2。再对新的p1p2求中点pm。重复上述过程,直到pmp2长度小于给定的控制常数为止,此时pm收敛于交点。,P2,P1,Pm,S1,S2,42,求端点P1、P2编码code1、code2,code1code2=0?,code1=code2=0?,code1=0?,Pm=(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,43,该算法的主要计算过程只用到加法和除2运算,所以特别适合硬件实现,同时也适合于并行计算。,44,Cyrus-Beck算法是典型的一种。可用非矩形的凸多边形窗口裁剪 2 维线段,用凸多面体裁剪 3 维线段。Cyrus-Beck算法是基于向量点积原理判断线段端点的区域、计算交点的。,Cyrus-Beck参数裁剪算法,窗口一边界与线段P1P2的相交情况:边界Ei,内法矢 Ni,其上任意点fi。线段P1P2的参数方程:P(t)=P1+(P2-P1)t,45,直线P1P2,两端点座标为P1(1,1),P2(9,3),对一个矩形区域内的裁剪。,P1P2方程:,参数方程:,内法矢:i,-i,j,-j(左右下上),左边界,取f(0,0),nL=i,46,t1/10,右边界:f(8,4)nR=i,t9/10,下边界:f(0,0),nB=j,t1/2,上边界:f(8,4),nT=j,t3/2,47,48,49,若交换P3、P4的位置,将导出显示窗口完全位于线段左侧的结论,因此,在作出线段不可见的结论时,被裁剪线段方向是重要的。,50,51,Cyrus-Beck参数化裁剪算法,Cyrus-Beck算法是典型的一种。可用非矩形的凸多边形窗口裁剪 2 维线段,用凸多面体裁剪 3 维线段。Cyrus-Beck算法是基于向量点积原理判断线段端点的区域、计算交点的。,窗口一边界与线段P1P2的相交情况:边界Ei,内法矢 Ni,其上任意点fi。线段P1P2的参数方程:P(t)=P1+(P2-P1)t,52,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-P1)t,53,线段与边界线 Ei 的交点满足:0 t 1但其中有有效交点和无效交点。,有效交点的确定:进入交点PE(Ni(P2-P1)0)离开交点PL(Ni(P2-P1)0),最后交点对(PE,PL)交点参数 tE、tL 满足:,靠近直线的终点,靠近直线的起点,54,交点对(PE,PL):PE=P(tE),PL=P(tL),合理性:tE tL如果tEtL,则线段完全落在裁剪窗口之外。,55,56,梁友栋和Barskey提出的参数化裁剪算法。首先按参数化形式写出裁剪矩形的裁剪条件:这四个不等式可以表示为形式:其中,参数pk,qk定义为:任何平行于裁剪边界之一的直线pk=0,k=1,2,3,4对应于左、右、下、上裁剪边界;如果qk0,则线段完全在边界外,舍弃。如果qk0,则该线段在窗口内,与裁剪边界平行。,梁友栋Barskey算法,t,57,当qk0,P1位于第k条边的内侧,可见部分 当qk0,线段与边界的交点的t值:t=qk/pk.,q1x1-xLx1q2xR-x1xRq3y1-yBy1q4yT-y1yT,58,对于每条直线,可以计算出定义裁剪矩形内线段部分的参数 te、tl。te的值由线段从外到内遇到的矩形边界所决定(p0)。对这些边界计算tk=qk/pk。tl=min0,tk。取te tl时的线段,否则完全落在裁剪窗口之外。,pk0,线段从内到外,p1x1-x2xLx1p2x2-x1xR x2p3y1-y2 yBy1p4y2-y1yT y2,59,3.多边形裁剪算法,多边形裁剪:等价于直线段逐段裁剪的组合?问题:1)边界不再封闭,需要用窗口边界的恰当部分来封闭它,如何确定其边界?,60,2)一个凹多边形可能被裁剪成几个小多边形,如何 确定这些小多边形的边界?,61,Sutherland-Hodgman算法(逐边裁剪算法),算法基本思想:逐边裁剪、两次分解、流水线作业.首先将多边形对于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪,其次,将多边形对一条直线的裁剪分解为各边对直线的裁剪。亦称逐边裁剪算法.,62,考虑窗口的一条边以及延长线构成的裁剪线,把平面分成:含窗口可见一侧;不可见一侧。,依序考虑多边形的各条边的两端点S、P。它们与裁剪边界有四种位置关系:(1)S,P均在可见侧(2)S可见,P不可见(3)S,P均在不可见侧(4)S不可见,P可见。,63,每条线段端点S、P与裁剪线比较后,可输出0至2个顶点:情况(1)仅输出终点 P;情况(2)输出线段 SP 与裁剪线的交点 I;情况(3)输出 0 个顶点;情况(4)输出线段 SP与裁剪线的交点 I和终点 P。,上述算法仅用一条裁剪边对多边形进行裁剪,得到一个顶点序列,作为下一条裁剪边处理过程的输入。,64,65,66,裁剪结果的顶点构成:裁剪边内侧的原顶点;多边形的边与裁剪边的交点。顺序连接。,几点说明:裁剪算法采用流水线方式,适合硬件实现。可推广到任意凸多边形裁剪窗口.,67,裁剪窗口可以为任意多边形,规定 主多边形:被裁剪多边形,记为A 裁剪多边形:裁剪窗口,记为B 多边形顶点的排列顺序:使多边形区域位于有向边的左侧。外环(逆时针)、内环(顺时针)内裁剪结果:A B 外裁剪结果:A-B,Weiler-Atherton 算法(双边裁剪算法),68,裁剪结果区域的边界由A的部分边界和B的部分边界两部分构成,并且在交点处边界发生交替,即由A的边界转至B的边界,或由B的边界转至A的边界。,69,两类交点:入点-沿主多边形边界由此进入裁剪多边形内出点-沿主多边形边界由此离开裁剪多边形区域特点:入点和出点成对出现。,Weiler_Athenton裁剪算法(内裁剪)步骤:1、建立主多边形和裁剪多边形的顶点环表;2、求主多边形和裁剪多边形的交点,建立入点表和出点表;并将这些交点按顺序插入两多边形的顶点环表。在两多边形顶点环表中的相同交点间建立双向指针;3、裁剪过程:,70,1)建立裁剪结果多边形的顶点表;2)依次选取入点表中的一个入点,检测其是否被处理过?是,取下一个入点,直至入点表中的入点全被处理过,结束;3)沿主多边形顶点环表正向搜索,将搜索到的主多边形顶点记入裁剪结果多边形的顶点表中,直至下一个交点(出点);4)按该交点的双向指针,搜索路径由主多边形转入裁剪多边形;5)沿裁剪多边形顶点环表正向搜索,将搜索到的裁剪多边形顶点记入裁剪结果多边形顶点表中,直至下一个交点(入点);检测该入点是否与开始入点相同?相同,转2);6)按该交点的双向指针,搜索路径又由裁剪多边形回到主多边形;转3)。,71,1、建立主多边形和裁剪多边形的顶点环表;,S1S2S3S4S5S6S7S1,C1C2C3C4C1,S1,S2,S3,S4,S5,S6,S7,C1,C2,C3,C4,I1,I2,I3,I4,I5,I6,I7,I8,主,裁,72,2、求主多边形和裁剪多边形的交点,建立入点表和出点表;并将这些交点按顺序插入两多边形的顶点环表。在两多边形顶点环表中的相同交点间建立双向指针;,I2I4I6I8,I1I3I5I7,主,裁,入,出,73,主,裁,I2I4I6I8,I1I3I5I7,入,出,74,I1I3,I2I4,入,出,S1S2S3S4S5I1S6I2S7S8S9I3I4S1,C1I3C2I2C3I1C4I4C1,主,裁,75,出点:I0,I2,I4,I6,I8,I10,入点:I1,I3,I5,I7,I9,I11,例1,76,77,78,例2,入点表:I1,I3,I5出点表:I2,I4,I6,79,主多边形环表:,W1,W2,W3,I2,W4,I5,I4,W5,W6,I3,I6,I1,W1,裁剪多边形环表,入点表: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,交点的奇异情况处理,1、与裁剪多边形边重合的主多边形的边不参与求交点;2、对于顶点落在裁剪多边形的边上的主多边的边,如果落在该裁剪边的内侧,将该顶点算作交点;而如果这条边落在该裁剪边的外侧,将该顶点不看作交点,82,4.字符裁剪,字符和文本部分在窗内、部分在窗外时,就出现字符裁剪问题。,字符裁剪按三个精度进行:串精度、字符精度、以及笔画象素精度。,串精度裁剪:将包围字串的外接矩形对窗口作裁剪。当字符串方框整个在窗口内时予以显示,否则不显示。,83,字符精度裁剪:将包围字的外接矩形对窗口作裁剪,某个字符方框整个落在窗口内予以显示,否则不显示。,84,笔画象素精度裁剪:将矢量字符的笔划分解成直线段对窗口作裁剪;将点阵字符的像素相对窗口边界作取舍。,85,5.3 3维观察控制流程1.定义,把世界坐标系描述的3维景物对象最终变换到计算机图形输出设备坐标系中,生成3维景物的视图(像)的整个过程。,86,2.3维观察过程,87,类比照像机拍摄景物的过程,拍摄过程选景取景-裁剪对焦参考点按快门-成像移动方式移动景物移动照相机两个坐标系,88,简单的三维图形显示流程图,89,3.3维观察控制流程,WC:描述 3D景物,WC 到VC变换,VC:定义观察体、规范化裁剪空间,NDC到DC窗口视区变换,DC:景物视图显示,NVC:规范化裁剪空间裁剪,MC到WC变换,MC:模型描述,90,5.4 观察坐标系及其变换 1.观察坐标系定义,观察坐标系(View Reference Coordinate或VRC)照相机所在的坐标系 如何建立观察坐标系坐标原点-聚焦参考点在底片(投影平面)上的投影,称为观察参考点VRP(View Reference Point)n 轴(N)-照相机镜头方向(投影平面的法向VPN)v 轴(V)-照相机向上的方向(代表观察正向VUP)u 轴(U)-,91,u、v、n 分别表示 U、V、N的单位向量,92,为什么采用观察坐标系?摄像类比问题:移动舞台还是移动摄像机?移动舞台:投影(摄像)简单;移动难度大。移动摄像机:移动容易;投影复杂。采用了观察坐标系:简化投影,加速投影变换 投影平面-n=0 投影中心-(0,0,d),93,2.WC 到 VC的变换,条件:VRC的坐标原点(观察参考点)VRP(XR,YR,ZR);投影平面法向VPN;观察正向VUP;,(1)单位矢量法,u v n 1=x y z 1.TWtoV,94,TWtoV=TT.TR(X,Y,Z),=,95,(2)组合变换法,1)WC 原点O平移到视点E(m,n,l),T1=,96,2)Exyz坐标系转成左手坐标系,T2=,97,3)Exyz新坐标系绕 x 顺时针旋转90 o,T3=,98,4)Exyz新坐标系绕 y 顺时针旋转,cos=,dy,,,99,求得复合变换矩阵TWtoV为 TWtoVT1T2T3T4T5,xe ye ze 1x y z 1TWtoV,100,将3维景物对象变换成2维平面图形的过程。投影是三维对象表示的基本研究内容之一。投影:将n维的点变换成小于n维的点。将3维的点变换成2维的点。,5.5 投影变换一.投影分类,101,投影中心与投影平面之间的距离为有限,投影中心与投影平面之间的距离为无限,102,投影中心(COP:Center of Projection)视觉系统观察点、视点;电影放映机光源 投影面不经过投影中心;平面-照相机底片;曲面球幕电影视网膜,103,二.平行投影,正投影和斜投影,104,(1)三视图,105,106,(5-27),107,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-m 1,1 0 0 00 cos(-90)sin(-90)00-sin(-90)cos(-90)00 0 0 1,TH,(5-28),俯视图变换矩阵TH:向H面作正投影;将H面绕X轴顺时针旋转90;沿-Z方向平移距离m。,108,侧视图变换矩阵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),109,2)先旋转后投影,TV 形式与结果均不变;TH=TRx(-90o).TV.TT(z=-m),结果不变;TW=TRz(90o).TV.TT(x=-l),结果不变。,110,(2)正轴测投影,分正等测、正二测和正三测三种投影。如图,当投影面与X、Y、Z轴之间的夹角都相等(即OX1OY1O1)时为正等测;,111,当OX、OY和OZ中有两个相等时为正二测;当OX、OY和OZ均不等时为正三测。,112,如图,把空间对象先绕Y轴逆时针旋转角,再绕X轴顺时针旋转角,最后向XOY坐标平面作正投影,得到正轴测投影。,113,114,115,然后在Z坐标轴方向作正投影,得到正轴测投影的变换矩阵TAxon=TRyTRxTZ,116,1)正等测投影 OA=OB=OC,117,118,2)正二测投影 几何条件:两个轴向变形系数保持相等,第三个轴向变形系数在满足pqr2的条件下可任取。,OA=OC,119,3)正三测投影 几何条件:三条轴的轴向变形系数均不相等。其变换矩阵即为式(6-32)。,cos 0-sinsin 0-sin 0-cossin 0 0 0 cos 0 0 0 0 1,Txon,(5-32),120,(3)斜轴测投影,121,如图6-13,设投影面为XOZ平面,投影方向与投影面的夹角为,投影线在XOZ平面上的投影与X轴的夹角为。空间点P(x,y,z)在投影面上的斜投影为P(x,0,z),正投影为P(x,z)。,122,任意点的斜投影坐标为:,xxyctgcosy(5-4)zzyctgsin,(5-42),123,若,斜轴测投影的投影方向与投影面成45角,即斜等测投影。若投影方向与投影面之间的夹角为arctg(2)时,得到的是斜二测投影;此时,与投影面垂直的直线将投影成一半长度。若,L,此时的斜轴测投影已转化为正投影。为了同时反映对象在三个方向上的形状,通常取为45或30。,124,三.透视投影,投影中心与投影平面之间的距离为有限参数:投影方向,d例子:室内白炽灯的投影,视觉系统灭点:不平行于投影平面的平行线,经过透视 投影之后收敛于一点,称为灭点.,125,主灭点:平行于坐标轴的平行线在投影面上的灭点。主灭点数最多有三个。若某坐标轴与投影面垂直,则只有一个主灭点,且在该坐标轴上。按主灭点个数,透视投影分为:一点透视 两点透视 三点透视,126,127,特点:产生近大远小的视觉效果,由它产生的图形深度感强,看起来更加真实。,128,XS YS ZS H=xe ye ze 1.TPer,(1)点的透视投影,129,H=ze/d,r=1/d,灭点在(0,0,1/r),视点在原点,投影面垂直于Z轴的透视变换矩阵:,130,q=1/d,灭点在(0,1/q,0),p=1/d,灭点在(1/p,0,0),视点在原点,投影面垂直于Y、X轴的透视:,131,两点透视、三点透视的变换矩阵:,132,(2)物体对象的透视投影,形成步骤:,1)在物体对象所在的WC中,建立以视点为原点的观察坐标系OeXeYeZe(投影平面垂直Ze,观察方向与Ze重合)。,2)物体对象从WC转换到VC中描述。,3)在VC中,将物体对象旋转:绕两坐标轴转形成三点透视,绕一坐标轴转形成两点透视,一点透视不用旋转。,4)在VC中,将物体对象平移到适当位置。,5)作透视变换,并向投影面投影。,133,1)2)步后面会专门讲解。物体经3)5)步的变换矩阵为:,TPer-ob=Tye().Txe().TT.TPerz.T(zs=d),(5-50),134,把(6-50)的透视投影再向XeOeYe平面作正投影(压缩):,(5-51),当=0,(6-51)的结果为一点透视变换矩阵;当、中只有一个 0 时,结果为两点透视变换矩阵;当、均 0 时,结果为三点透视变换矩阵(6-51)。,135,5.6 观察体,观察体是三维裁剪窗口。观察窗口可在观察平面的任何位置,窗口中心CW可不与观察坐标系原点重合。,136,一、观察空间与观察体,观察空间是世界坐标系中的一个子空间,由经过观察窗口四条边的四个平面围成的。其大小决定于观察窗口大小。,透视投影的观察空间是顶点在投影中心COP(投影参考点PRP)、棱边通过窗口四个角点而没有底面的无限四棱锥。平行投影的观察空间则是一个四条棱边平行于投影方向(从投影参考点PRP指向窗口中心CW)且通过窗口四个角点的、两端没有底面的无限长的方管。,137,投影参考点PRP(Projection Reference Point)透视投影:投影中心COP=投影参考点PRP平行投影:投影方向DOP=窗口中心CW-PRP,138,观察空间内处于不同深度的景物都将投影在观察窗口内,引起投影重叠;另一方面,靠近透视投影中心的物体对象的投影只有很小一部分在观察窗口内,而远离投影中心的物体对象在观察窗口内将投影成一个模糊的小点,因此,必须采用有限的观察空间-观察体选取观察目标。,在投影中心COP的同一侧,沿投影方向DOP用平行于观察平面的前截面FP和后截面BP截取无限的观察空间,得到一个有限的六面体,称为观察体。,139,前、后截面的区别由投影线按投影方向穿过截面的顺序决定。透视投影的观察体为四棱台;平行投影的观察体是截面为矩形的棱柱。,140,COP(PRP),FP,BP,VRP,CW,观察体中心线,投影平面VP,透视投影过观察体中心线的截面图,141,FP,VP,BP,VRP,DOP,正投影观察体中心线的截面图,142,定义观察体参数,143,透视投影变换问题-在uvn中,投影平面为n=0,投影中心为(0,0,d),待投影点为P,求投影点Q。,144,投影线的参数方程:,投影平面方程 n=0Q点的坐标:,145,透视投影变换矩阵,146,平行投影变换问题-在uvn中,投影平面为n=0,投影方向为(0,0,-1),待投影点为P,求投影点Q,147,投影线的参数方程,投影平面方程 n=0Q点的坐标,148,平行投影变换矩阵,透视投影与平行投影之间的关系,149,二、投影举例,待投影的单位立方体,150,缺省投影参数,参数 值投影类型 平行投影VRP(WC)(0,0,0)VPN(WC)(0,0,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,1)窗口(VRC)(0,1,0,1)F(VRC)正无穷B(VRC)负无穷,151,透视投影一点透视,参数 值投影类型 透视投影VRP(WC)(0,0,0)VPN(WC)(0,0,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,4)窗口(VRC)(-0.5,1.5,-0.5,1.5),参数 值投影类型 透视投影VRP(WC)(0,0,0)VPN(WC)(0,0,1)VUP(WC)(0,1,0)PRP(VRC)(2.0,2.0,4.0)窗口(VRC)(-0.5,1.5,-0.5,1.5),152,两点透视,参数 值投影类型 透视投影VRP(WC)(0,0,0)VPN(WC)(1,0,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,4)窗口(VRC)(-1.5,1.5,-1.5,1.5),参数 值投影类型 透视投影VRP(WC)(0,0,0)VPN(WC)(1,0,1)VUP(WC)(1,1,0)PRP(VRC)(0.5,0.5,4)窗口(VRC)(-1.5,1.5,-1.5,1.5),153,平行投影,参数 值投影类型 平行投影VRP(WC)(0,0,0)VPN(WC)(0,0,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,1)窗口(VRC)(-0.5,1.5,0.5,1.5),参数 值投影类型 平行投影VRP(WC)(0,0,0)VPN(WC)(1,1,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,2)窗口(VRC)(-0.5,1.5,0.5,1.5),154,前、后裁剪面的影响,参数 值投影类型 透视投影VRP(WC)(0,0,0)VPN(WC)(0,0,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,2)窗口(VRC)(-0.5,1.5,-0.5,1.5)F(VRC)1.2B(VRC)0.2,155,平行投影的规范观察体半立方体,三、规范观察体,156,透视投影的规范观察体四棱台,157,为什么引入规范观察体简化投影,简化裁剪,规范化变换将任意观察体变换成规范观察体的变换规范投影坐标(三维屏幕坐标)经规范化的观察坐标系,158,采用规范观察体的三维观察流程图:,159,平行投影观察体的规范化将任意的平行投影观察体变换为规范平行投影观察体,Npar=TTpar1 TSHpar TTpar2 TSpar,160,161,透视投影观察体的规范化将任意的透视投影观察体变换为规范透视投影观察体,Nper=TTper TSHper TSper,162,163,规范观察体之间的变换将透视投影的规范观察体变换为平行投影的规范观察体,为什么?关于长方体的裁剪较关于正四棱台的裁剪简单。平行投影较透视投影简单。透视投影与平行投影都采用同一套裁剪与投影程序,处理一致,便于用硬件实现,164,采用观察体变换的三维观察流程图,165,5.7 三维裁剪,两种方法将齐次坐标转换为三维坐标,在三维空间关于观察体裁剪优点:三维裁剪相对容易缺点:需要将齐次坐标转换为三维坐标直接在四维齐次坐标空间中进行裁剪优点:不需要将齐次坐标转换为三维坐标有理曲线曲面可能直接用齐次坐标来表示,对它们的裁剪只能在齐次坐标空间中进行 缺点:四维裁剪相对复杂,166,关于规范观察体的裁剪直线段裁剪的Cohen_Sutherland算法、梁_Barskey算法的直接推广多边形裁剪的Sutherland_Hodgman算法的直接推广,齐次坐标空间中的裁剪四维裁剪体的定义,167,三维裁剪的实现过程,1、将三维坐标扩展为齐项坐标,(x,y,z)(x,y,z,1);2、进行模型变换;

    注意事项

    本文(第5章观察变换和裁剪.ppt)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开