吉林大学:《计算机图形学》课程电子教案(PPT课件)第三章 图形变换 第六节 裁剪

第六节裁剪 裁剪就是去掉窗口外的不可见部分, 保留窗口内的可见部分的过程。 裁剪区域:矩形、任意图形 裁剪对象:点、线段、多边形、 二维或三维形体 假设窗口的两个对角顶点分别 是(%)、(xr),则同时满足下列不等式的 点(x,y)是要保留的点,否则就要被舍弃: 7≤x≤xr,yb≤syt
第六节 裁剪 裁剪就是去掉窗口外的不可见部分, 保留窗口内的可见部分的过程。 裁剪区域:矩形、任意图形 裁剪对象:点、线段、多边形、 二维或三维形体 假设窗口的两个对角顶点分别 是 、 ,则同时满足下列不等式的 点 是要保留的点,否则就要被舍弃: ( , ) b y l x ( , ) t y r x (x, y) t y y b y r x x l x ,

直线段裁剪算法 Cohen-Sutherland:算法 该算法的基本思想是:首先判断直线 段是否全部在窗口内,是,则保留;不 是,则再判断是否完全在窗口之外,如 是,则舍弃。如果这两种情况都不属于 ,则将此直线段分割,对分割后的子线 段再进行如前判断。直至所有直线段和 由直线段分割出来的子线段都已经确定 了是保留还是舍弃为止
直线段裁剪算法 Cohen-Sutherland算法 该算法的基本思想是:首先判断直线 段是否全部在窗口内,是,则保留;不 是,则再判断是否完全在窗口之外,如 是,则舍弃。如果这两种情况都不属于 ,则将此直线段分割,对分割后的子线 段再进行如前判断。直至所有直线段和 由直线段分割出来的子线段都已经确定 了是保留还是舍弃为止

1001 1000 1010 yt 0001 0000 0010 yo 0101 0100 0110 x Xr 图3.25 区域编码 编码:如果该区域在窗口的上方,则代码的第一位为1 如果该区域在窗口的下方,则代码的第二位为1;如果 该区域在窗口的右侧,则代码的第三位为1;如果该区 域在窗口的左侧,则代码的第四位为1
编码:如果该区域在窗口的上方,则代码的第一位为1; 如果该区域在窗口的下方,则代码的第二位为1;如果 该区域在窗口的右侧,则代码的第三位为1;如果该区 域在窗口的左侧,则代码的第四位为1

D H 算法步骤如下: 4 第一步:编码 J 第二步:判别 B 第三步:求交 第四步:对剩下的 线段重复以上各步 XL 图3.26 Cohen-sutherland裁剪箅
算法步骤如下: 第一步:编码 第二步:判别 第三步:求交 第四步:对剩下的 线段重复以上各步

算法的程序实现如下 函数Cohen Suther I and,用来实现算法 函数makecode)用来编码,利用数值位运算 double xI,xr,yt,yb;(事先给出窗口的 位置,四个数值是已知的) void Cohen Sutherland(double x0,y0,x2,y2) { int c,cl,c2; double x,y; makecode(x0,y0,c1);makecode(x2,y2,c2); while(c1!=0‖c2!=0) if (c1&c2!=0)return;
算法的程序实现如下 函数Cohen_Sutherland用来实现算法 函数makecode用来编码,利用数值位运算 double xl, xr, yt, yb; (事先给出窗口的 位置,四个数值是已知的) void Cohen_Sutherland(double x0, y0, x2, y2) { int c, c1, c2; double x, y; makecode(x0, y0,c1); makecode(x2, y2, c2); while (c1!=0 || c2!=0) { if (c1&c2!=0) return;

c=c1;if (c==0)c=c2; if(c&1==1){y=y0+(y2-y0)*(x1-x0)/(x2-x0);x=x1;} else if(c&2==2){y=y0+(y2-y0)*(xr-x0)/(x2-x0); x=xr; else if(c&4==4){x=x0+(x2-x0)*(yb-y0)/y2-y0); y=yb; else if(c&8==8){x=x0+(x2-x0)*(yt-y0)/(y2-y0); y=yt; if (c==c1) {x0=x;y0=y;makecode(x,y,c1);} else {x2=x;y2=y;makecode(x,y,c2);} showline(x0,y0,x2,y2);∥显示可见线段
c=c1; if (c==0) c=c2; if (c&1==1){y=y0+(y2-y0)*(x1-x0)/(x2-x0); x=x1;} else if (c&2==2){y=y0+(y2-y0)*(xr-x0)/(x2-x0); x=xr;} else if (c&4==4){x=x0+(x2-x0)*(yb-y0)/(y2-y0); y=yb;} else if (c&8==8){x=x0+(x2-x0)*(yt-y0)/(y2-y0); y=yt;} if (c==c1) {x0=x; y0=y; makecode(x, y, c1);} else {x2=x; y2=y; makecode(x, y, c2);} } showline(x0, y0, x2, y2); //显示可见线段}

void makecode(double x,y;int c) c=0; if (xxr)c=2; if (yyt)c=c+8;
void makecode(double x, y; int c) { c=0; if (xxr) c=2; if (yyt) c=c+8; }

中点分割算法 设要裁剪的直线段为0。中点分割算法 的基本思想如下:可分成两个过程平行进行, 即从0点出发找出离点0最近的可见点,和从 P点出发找出离点P最近的可见点。这两个 最近可见点的连线就是原直线段的可见部分。 从出发找最近可见点的方法是先求的0中 中点。重复上过程,直到长度小于给定的小数 为止
设要裁剪的直线段为 。中点分割算法 的基本思想如下:可分成两个过程平行进行, 即从 点出发找出离点 最近的可见点,和从 点出发找出离点 最近的可见点。这两个 最近可见点的连线就是原直线段的可见部分。 从 出发找最近可见点的方法是先求的 中 点 ,若 不能定为显然不可见,则取 代替,否则取 代替,再对新的求 中点。重复上过程,直到长度小于给定的小数 为止。 P1 0 P m P m P P0 1 P m P 0 1 P P 0 P P1 0 P 0 1 P P m P P0 中点分割算法

Po A 卫 B 图3.27 中点分割薛法

P是否可见? P=P exit PP显然不可见? 原线完全不可见 香 exit P.=(p6+p)/2 pa-pl<8? Po=Px exit PP显然不可见? 是 Po=P P=P 图3.28中点分割算法框图
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第四节(2/2).ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第五章 图形运算 第一节 线段的交点计算.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第五节 B样条曲线和曲面.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第三节 Coons曲面.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第四节 Bezier曲线和曲面.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第四章 曲线和曲面 第一节 曲线和曲面表示的基础知识 第二节Hermite多项式.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第三章 图形变换 第五节 投影.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第二章 图形基元的显示 第二节 圆的扫描转换算法 第三节 区域填充算法.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第二章 图形基元的显示 第四节(2/2).ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第三章 图形变换 第四节 三维图形变换.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第二章 图形基元的显示 第四节 多边形的扫描转换算法.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第一章 计算机图形学简介 第三节 计算机图形学的应用及发展动向 第四节 图形系统的硬件.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第二章 图形基元的显示 第一节 直线扫描转换算法.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第三章 图形变换 第一节 变换的数学基础 第二节 二维图形变换 第三节 二维视见变换.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第一章 计算机图形学简介 第一节 计算机图形学 第二节 计算机图形学的起源.ppt
- 吉林大学:《Windows程序设计》课程电子教案(PPT课件)Windows程序设计教学课件(2/2,主讲人:翟慧杰).ppt
- 吉林大学:《Windows程序设计》课程电子教案(PPT课件)Windows程序设计教学课件(1/2,主讲人:翟慧杰).ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第四章 栈和队列.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第六章 树.ppt
- 吉林大学:《数据结构》课程电子教案(PPT课件)第五章 数组、字符串、集合类.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第五章 图形运算 第五节(2/2).ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第六章 形体的表示及其数据结构 第二节(2/2).ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第六章 形体的表示及其数据结构 第一节 图形的分段表示 第二节 二维形体的表示.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第六章 形体的表示及其数据结构 第三节 四叉树 第四节 三维几何模型.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第五章 图形运算 第五节 简单多边形的三角剖分.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第五章 图形运算 第二节 多边形表面的交线计算.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第五章 图形运算 第四节 包含与重叠.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第五章 图形运算 第三节 平面中的凸壳算法.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第八章 真实感图形的绘制 第六节 光线跟踪 第七节 辐射度方法 第八节 色彩模型.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第八章 真实感图形的绘制 第八节(2/2).ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第八章 真实感图形的绘制 第三节 阴影 第四节 纹理 第五节 整体光照明模型.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第七章 消除隐藏线和隐藏面的算法 第四节 z−缓冲算法 第五节 扫描线算法.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第八章 真实感图形的绘制 第一节 漫反射及具体光源的照明 第二节 多边形网的明暗处理.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第六章 形体的表示及其数据结构 第四节 分形 第七章 消除隐藏线和隐藏面的算法 第一节 线面比较法消除隐藏线.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第七章 消除隐藏线和隐藏面的算法 第六节 区域分割算法.ppt
- 吉林大学:《计算机图形学》课程电子教案(PPT课件)第七章 消除隐藏线和隐藏面的算法 第二节 曲面隐藏线消除的浮动水平线算法 第三节 深度排序算法.ppt
- 吉林大学:《面向对象程序设计》课程电子教案(PPT教学课件,简版讲稿,共八章,主讲:王爱民).ppt
- 吉林大学:《IP技术与综合宽带网》课程电子教案(PPT课件)第一章 宽带IP网络概述(负责人:于银辉).ppt
- 吉林大学:《IP技术与综合宽带网》课程电子教案(PPT课件)第三章 局域网技术.ppt
- 吉林大学:《IP技术与综合宽带网》课程电子教案(PPT课件)第二章 宽带IP网络体系结构.ppt