CG No6-图形变换 3.ppt
《CG No6-图形变换 3.ppt》由会员分享,可在线阅读,更多相关《CG No6-图形变换 3.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、CG No6-图形变换图形变换 3Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo本章内容本章内容 u 1、图形变换的数学基础、图形变换的数学基础u 2、二维图形变换、二维图形变换u 3、三维图形变换、三维图形变换u 4、投影变换、投影变换u 5、裁剪、裁剪Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo七、裁剪七、裁剪u裁剪:确定图形中哪些部分落在显示区之内,哪些落在显裁剪:确定
2、图形中哪些部分落在显示区之内,哪些落在显示区之外示区之外, ,以便只显示落在显示区内的那部分图形。这个以便只显示落在显示区内的那部分图形。这个选择过程称为裁剪。选择过程称为裁剪。Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo预备知识预备知识 u 交点计算交点计算u 1. 两直线段的交点两直线段的交点u 设有两线段设有两线段S1,S2。S1的端点分别为的端点分别为P1(x1,y1),P2(x2,y2), S2的端点分别的端点分别为为P3(x3,y3), P4(x4,y4).则两直线段的参
3、数方程为:则两直线段的参数方程为: 13)43()12(13)43()12(:;3)34(1)12(;3)34(1)12(:)10(3)34(3)34(:2)10(;1)12(;1)12(:1yyvyyuyyxxvxxuxxyvyyyuyyxvxxxuxx,vyvyyyxvxxxSuyuyyyxuxxxS上式可进一步整理成则应满足如果两直线段能相交显然Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libou 讨论:讨论:u 无解:此时意味两线段平行或重合;无解:此时意味两线段平行或重合;u 有
4、唯一解:但不一定是有效解,有效解应该是交点必须位于两直线段上。有唯一解:但不一定是有效解,有效解应该是交点必须位于两直线段上。此时应满足如下条件:此时应满足如下条件: 0u1.0 0v1.0 0u1.0 0v1.0 。根据。根据u,vu,v的值,即的值,即可获得交点的坐标。可获得交点的坐标。u 2. 直线段与圆弧的交点直线段与圆弧的交点。tryytyyrxxtxx:ryyrxxr、yxctytyyyxtxxxccescccc值和联立求解即可获得则有如果直线段和圆弧相交的圆弧方程为半径为圆心为假定直线段的方程如下sin*1)12(cos*1)12()(sin*cos*:),()0.10(1)12
5、(1)12(:Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo点的裁剪点的裁剪u是图形裁剪中最基本的问题。是图形裁剪中最基本的问题。 u假设窗口的左下角坐标为假设窗口的左下角坐标为(xL,yB),右上角坐标为右上角坐标为(xR,yT),对,对于给定点于给定点P(x,y),则则P点在窗口内的条件是要满足下列不等式:点在窗口内的条件是要满足下列不等式: xL = x = xR并且并且yB = y xr线段的起点坐标可能线段的起点坐标可能位于位于6区、区、7区、区、8区。区。而新起点的坐标可能
6、在而新起点的坐标可能在直线直线y= yb和线段的交点上和线段的交点上直线直线y= yt和线段的交点上和线段的交点上直线直线x= xr和线段的交点上和线段的交点上012345678(x1,y1)ybytxlxrComputer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libou第一种情况:第一种情况:u 此时,若此时,若xlxs xr 则则(xs ys)为有效新起点。为有效新起点。u第二种情况:第二种情况:u 此时,若此时,若xlxs xr 则则(xs ys)为有效新起点。为有效新起点。u第三种情况:第三种
7、情况:u u 此时,若此时,若ybys yt 则则(xs ys)为有效新起点。为有效新起点。u若此三种情况都不满足,则此线段不在窗口区内。若此三种情况都不满足,则此线段不在窗口区内。bsbyyyyxxyyxx)/()(121211ststyyyyxxyyxx)/()(121211s)/()(y121211sxxyyxxyxxrrsComputer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libou若若Xl=X=Xru线段的起点坐标可能线段的起点坐标可能u位于位于1区和区和2区。区。u而新起点的坐标可能在而
8、新起点的坐标可能在u直线直线y= yb和线段的交点上和线段的交点上u直线直线y= yt和线段的交点上和线段的交点上012345678(x1,y1)ybytxlxrComputer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo第一种情况:第一种情况: 此时,若此时,若xlxs xr 则则(xs ys)为有效新起点。为有效新起点。第二种情况:第二种情况: 此时,若此时,若xlxs xr 则则(xs ys)为有效新起点。为有效新起点。若此二种情况都不满足,则此线段不在窗口区内。若此二种情况都不满足,则此线段
9、不在窗口区内。使用同样的方法,可得到直线在窗口的另一个可见端点。使用同样的方法,可得到直线在窗口的另一个可见端点。xxxxyyyyyystst010010()() /()xxxxyyyyyysbsb010010()()/()Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo(二)(二)Cohen - SutherLand 算法(编码法)算法(编码法)基本思想是:基本思想是:1)1)首先判断线段是否完全位于窗口内,如果是,则输出原线首先判断线段是否完全位于窗口内,如果是,则输出原线段,如果不
10、是,那么再进而判断是否完全位于窗口外,若段,如果不是,那么再进而判断是否完全位于窗口外,若是,则排除该线段,无输出。是,则排除该线段,无输出。2)2)如果以上测试都不满足的话,那么就将该线段用窗口边线如果以上测试都不满足的话,那么就将该线段用窗口边线分割为二段,然后再回到分割为二段,然后再回到1)1)进行上述测试。进行上述测试。Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libou实现方法:实现方法:u u将窗口边线两边沿长,得到九个区域,每一个区域都将窗口边线两边沿长,得到九个区域,每一个
11、区域都用一四位二进制数标识,直线的端点都按其所处区域用一四位二进制数标识,直线的端点都按其所处区域赋予相应的标识码。赋予相应的标识码。100100010101100000000100101000100110ABCDw1w2w4w3Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo第一位第一位 1:点处于左边框线的左边;:点处于左边框线的左边;第二位第二位 1:点处于右边框线的右边;:点处于右边框线的右边;第三位第三位 1:点处于下边框线的下边;:点处于下边框线的下边;第四位第四位 1:点处
12、于上边框线的上边;:点处于上边框线的上边;显然:显然:如果某线段的两端点的两个四位代码全为零时那么该线段如果某线段的两端点的两个四位代码全为零时那么该线段完全位于窗口内;如果两端点的标识码的逻辑乘不为零,完全位于窗口内;如果两端点的标识码的逻辑乘不为零,那么该线段必位于窗口外。那么该线段必位于窗口外。如果线段被分割,端点有了新的代码,然后再进行上述测试,如果线段被分割,端点有了新的代码,然后再进行上述测试,测试结果是必有一段在窗口之外,可被排除,另一段再重测试结果是必有一段在窗口之外,可被排除,另一段再重复上述处理过程。复上述处理过程。Computer Graphics 计算机图形学计算机图形
13、学LinYi University School of Informatics Wang Libo裁剪步骤:裁剪步骤:1.编码:计算端点坐标与窗口边界之差编码:计算端点坐标与窗口边界之差 用每次差运算结果的符号位来设置区域代码的对应位置。用每次差运算结果的符号位来设置区域代码的对应位置。即第一位为即第一位为x-w1的符号位,第二位为的符号位,第二位为w2-x的符号位,第三的符号位,第三位为位为y-w3的符号位,第四位为的符号位,第四位为w4-y的符号位。的符号位。2.判别:判别: 线段两端点均在窗口内,两端点编码均为线段两端点均在窗口内,两端点编码均为0000 线段两端点均不在窗口内,两端点编
14、码均不为线段两端点均不在窗口内,两端点编码均不为0000 线段只有一个端点在窗口内,则只有一个端点编码为线段只有一个端点在窗口内,则只有一个端点编码为00003.裁剪原则:裁剪原则: 1)两点均为)两点均为0000,保留,保留 2)两端点编码进行)两端点编码进行“与与”运算,如果结果不为运算,如果结果不为0000,则在,则在窗口外窗口外 3) 若若“与与”的结果为的结果为0000,要求交点,要求交点Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo4.求交点求交点 对需要求交点的线段,逐步
15、与窗口边界比较,分别令对需要求交点的线段,逐步与窗口边界比较,分别令x=w1,或或x=w2,或,或y=w3,或或y=w4 并代入两直线的交点方程:并代入两直线的交点方程: (y-y1)/(y2-y1)=(x-x1)/(x2-x1) 求出交点求出交点(x,y)5.循环测试裁剪,直到结束。循环测试裁剪,直到结束。Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo(三)中点分割算法(三)中点分割算法u定义:线段端点的最远可见点是指任一线段被窗口裁剪后定义:线段端点的最远可见点是指任一线段被窗口裁
16、剪后所得两个新端点中离该端点较远的一个点。如下图所示。所得两个新端点中离该端点较远的一个点。如下图所示。uA的最远可见点为的最远可见点为a, uB的最远可见点为的最远可见点为b.u中点分割法的基本思想即是:中点分割法的基本思想即是:u从从A点出发找出距点出发找出距A最近的可见点最近的可见点u从从B点出发找出距点出发找出距B最近的可见点最近的可见点u不断地在中点处将线段一分为二,对每段线段重复不断地在中点处将线段一分为二,对每段线段重复Cohen-Sutherland裁剪算法的线段可见性测试方法,直至找到每裁剪算法的线段可见性测试方法,直至找到每段线段与窗口边界线的交点或分割子段的长度充分小可视
17、段线段与窗口边界线的交点或分割子段的长度充分小可视为一点为止为一点为止 ABabComputer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo实现算法实现算法从从P0出发找距离出发找距离P0最近可见点采用中点分割方法最近可见点采用中点分割方法u先求出先求出P0P1的中点的中点Pm,u若若P0Pm不是显然不可见的,并且不是显然不可见的,并且P0P1在窗口中有可见部分,则距在窗口中有可见部分,则距P0最近的可见点一定落在最近的可见点一定落在P0Pm上,所以用上,所以用P0Pm代替代替P0P1;u否则取否则
18、取PmP1代替代替P0P1。u再对新的再对新的P0P1求中点求中点Pm。重复上述过程,直到。重复上述过程,直到PmP1长度小于给定长度小于给定的控制常数为止,此时的控制常数为止,此时Pm收敛于交点。收敛于交点。u 从从P1出发找距离出发找距离P1最近可见点采用上面类似方法。最近可见点采用上面类似方法。P0P1PmABComputer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang LiboComputer Graphics 计算机图形学计算机图形学LinYi University School of Inform
19、atics Wang Libo(四)梁友栋(四)梁友栋-Barsky算法算法uCohen-Sutherland算法用编码的方法实现了对完全可见和算法用编码的方法实现了对完全可见和不可见直线段的快速接受和拒绝。比较适合两种情况:一不可见直线段的快速接受和拒绝。比较适合两种情况:一是大部分线段完全可见;二是大部分线段完全不可见。是大部分线段完全可见;二是大部分线段完全不可见。u在在Cohen-Sutherland算法提出后,算法提出后,Cyrus和和Beck用参数化用参数化方法提出了针对凸多边形的裁剪算法,它比编码算法更有方法提出了针对凸多边形的裁剪算法,它比编码算法更有效。而梁友栋和效。而梁友栋
20、和Barsky 又针对标准矩形窗口提出了更快的又针对标准矩形窗口提出了更快的Liang-Barsky直线段裁剪算法。直线段裁剪算法。Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo设要裁剪的线段是设要裁剪的线段是P0P1。P0P1和窗口边界交于和窗口边界交于A,B,C,D四点,见图。算法的基本思想四点,见图。算法的基本思想是从是从A,B和和P0三点中找出最靠三点中找出最靠近的近的P1点,图中要找的点是点,图中要找的点是P0。从。从C,D和和P1中找出最靠近中找出最靠近P0的点。图中要找的
21、点是的点。图中要找的点是C点。点。那么那么P0C就是就是P0P1线段上的可线段上的可见部分。见部分。Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo线段的参数表示线段的参数表示x=x0+txy=y0+ty 0=t tl,则可见线段区间则可见线段区间 tl , tut0t1t2t301Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo始边和终边的确定及交点计算:始边和终边的确定及交点计
22、算:令令 QL= - x DL= x0-xL QR= x DR= xR-x0 QB= - y DB= y0-yB QT= y DT= yT-y0交点为交点为 ti= Di / Qi i=L,R,B,TQi 0 ti为与终边交点参数为与终边交点参数Qi =0 Di 0 时时, 分析另一分析另一D,EFABComputer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo当当Qi =0时时 若若Di 0 时时,线段不可见线段不可见(如图中(如图中AB,有,有QR=0,DR0 时时, 分析另一分析另一D, (如
23、图中的(如图中的EF就是这种情况,它使就是这种情况,它使QL=0,DL0和和QR=0,DR0。这时。这时由于由于EF和和x=xL及及x=xR平行,故不必平行,故不必去求出去求出EF和和x=xL及及x=xR的交点,而的交点,而让让EF和和y=yT及及y=yB的交点决定直线的交点决定直线段上的可见部分。)段上的可见部分。)EFABComputer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo(五)多边形的布尔运算(五)多边形的布尔运算1 1) 布尔运算的概念布尔运算的概念 多边形的布尔运算指的是在两个多边
24、形之间进行的并、交、差运算。多边形的布尔运算指的是在两个多边形之间进行的并、交、差运算。下图分别表示了三种运算的含义下图分别表示了三种运算的含义。ABABABA-BComputer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo2) 多边形的描述多边形的描述 多边形可看成是由一组顶点按一定顺序连接而成的有向点列。多边形可看成是由一组顶点按一定顺序连接而成的有向点列。为以后处理方便,将多边形的顶点按逆时针方向顺序连接成一为以后处理方便,将多边形的顶点按逆时针方向顺序连接成一个环来描述多边形的组成。而顺序连
25、接两点的直线段,表示了个环来描述多边形的组成。而顺序连接两点的直线段,表示了一有向线段。该环可用一链表结构描述。一有向线段。该环可用一链表结构描述。上面多边形可描述为:上面多边形可描述为:1-2-3-4-1的链表形式。的链表形式。1243Computer Graphics 计算机图形学计算机图形学LinYi University School of Informatics Wang Libo3) 布尔运算规则布尔运算规则 两个多边形能进行布尔运算的前提是这两个多边形必两个多边形能进行布尔运算的前提是这两个多边形必须有相互重叠部分。这可通过多边形重叠性检验来判断。须有相互重叠部分。这可通过多边形
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CG No6-图形变换 No6 图形 变换
限制150内