3. 配对 4. 填色

扫描线基础算法的核心是计算扫描线与多边形的交点,然后配对,着色。其实求解交点这一步工作量是非常大的,所以根据前面介绍的多边形边的连贯性,区域的连贯性规则,我们可以构造更简单的扫描线算法(有的书称为有序边表算法)。下面是其的数据结构实现,改进后的扫描线算法就是简化了不断求解交点这么一个复杂的工作。 边填充法:

基本思想:光栅图形中,如果某区域已着上值为M的颜色值做偶数次求余运算,该区域颜色不变;而做奇数次求余运算,则该区域颜色变为值为新的颜色。这一规律应用于多边形扫描转换,就为边填充算法。 栅栏填充算法:

实质:改进的边填充算法

引入栅栏,以减少填充算法访问象素的次数。

栅栏:与扫描线垂直的直线,通常过一顶点,且把多边形分为左右

二半。

优缺点:减少了象素重复访问数目,但不彻底。 边界标志算法:

引入边标志:以克服象素被重复访问的缺点。 算法思想:

1. 轮廓线:对多边形的每一条边进行扫描转换,即对多边形边界所经过

的象素作一个边界标志。

2.填充:对每条与多边形相交的扫描线,按从左到右的顺序,逐个访问该

扫描线上的象素。

实现细节:

取一个布尔变量inside来指示当前点的状态,Inside 的初始值为假,每当当前访问象素为被打上标志的点,就把inside取反。对未打标志的点,inside不变。

4.3区域填充(种子填充算法)

上一节我们讲述了多边形的扫描转换,在实际应用中,我们可能会遇到任意的区域。要求对任意封闭的区域进行填充,不该变多边形的表示,

若inside为真,则点在多边形内,着色。 若inside为假,则点在多边形外,着背景色

区别于多边形的扫描转换。

种子填充算法思想

进行着色,因为多边形的边是直线,是规则的,所以计算起来也比较容易,但是对于任何不规则区域,考虑到边的不规则性,使用扫描线类填充算法更麻烦。种子填充算法思想是只考虑边界的颜色结构,从被填充区域内部任意一点出发,通过判断周边像素是不是边界而进行填充,直到填充完毕。

区域填充的概念

4连通:从区域内任意一点出发,可通过上、下、左、右四个方向到

达区域内的任意象素;

8连通:从区域内任意一点出发,可通过上、下、左、右、左上、左

下、右上、右下八个方向到达区域内的任意象素;

区域填充图案

多边形扫描转换与区域填充方法联系

4.4反走样

思考题:

1.如何绘制多边形?请在第二章绘制直线的基础上写出绘制多边形的方法。

2.如何判断多边形为凸或凹多边形?

3.试描述多边形扫面转换和区域填充的异同,并给出例子。 4.给出多边形扫描线算法改进的邻接链表算法例子。 用离散量表示连续量引起的失真现象称之为走样(aliasing) 走样原因:

1)光栅图形的象素是离散的,是有面积的,而非数学中面积为零的

点。

2)线段、多边形的边界等都是连续的。

因此,用离散的象素表示连续的线段或多边形的边界时光滑的线段

就成了阶梯状或锯齿状。

用于减少或消除走样现象的技术称为反走样(antialiasing) 硬件方法———提高分辨率

软件方法———区域采样,加权区域采样,半色调技术

前面介绍的扫描线,边填充算法等都是直接考虑多边形的边,最后

第五章 裁剪

教学学时:4课时 教学目的与要求:

让学生初步了解裁剪的定义,掌握对直线段裁剪的一些基本算法,掌握简单的对多边形裁剪的算法,掌握算法的理论原理,能够分析基本算法的优缺点。

教学重点:Cohen-Sutherland算法,中点分割算法,梁友栋—Barsky算法,

参数化算法,Sutlerland_Hodgman算法。

教学内容:

5.1 裁剪概述 5.2 二维裁剪 5.2.1 直线段裁剪 5.2.2 多边形裁剪

5.1 裁剪概述

在使用计算机处理图形信息时,遇到的情况往往是计算机内部存储的图形比较大,而屏幕显示只是图的一部分。例如,虽然计算机内部可以存储全国地图,但是,如果把全国地图整幅显示在屏幕上,则不能看到各地局部的细节。这时,可以使用缩放技术,把地图中的局部区域放大显示。在放大显示一幅图形的一部分区域时,必须确定图形中哪些部分落在显示区之内,哪些部分落在显示区之外,以便显示落在显示区内的那部分图形。这个选择处理过程称为裁剪。在进行裁剪时,画面中对应于屏幕显示的那部分区域称为窗口。一般把窗口定义为矩形,由上、下、左、 右四条边围成。裁剪的实质就是决定图形中哪些点、线段、文字以及多边形在窗口之内。

裁剪可以在世界坐标系中进行,即相对于窗口进行;也可以把对象变换为设备坐标之后相对于视区进行。前者可以把不在窗口范围内的部分剪掉, 避免了不必要的变换处理;后者在设备坐标系中裁剪易于用硬件实现。裁剪处理的基础是:点在窗口区域内外的判断以及计算图形元素与窗口区域边界的交点。其原理虽然简单,但涉及的图形元素多, 提高裁剪速度是算法应考虑的重要问题。以下介绍直线段裁剪算法及多边形裁剪算法。

5.2 二维裁剪

裁剪算法有二维的和三维的,裁剪对象也可以是规则形体,也可以是不规则形体。本章重点介绍二维裁剪,三维裁剪涉及到后面章节三维消隐等内容,后面再简要介绍。 5.2.1 直线段裁剪

直线段裁剪算法是复杂图元裁剪的基础。复杂的曲线可以通过折线段来近似,从而裁剪问题也可以化为直线段的裁剪问题。所以本章重点讨论直线段的裁剪算法。算法一般取的裁剪多边形都是矩形,有些特殊的算法采用任意多边形裁剪。 直接求交算法

Cohen-Sutherland算法

基本思想:

对于每条被裁剪线段P1P2分为三种情况处理: 直线与窗口边都写成参数形式,求参数值。 设直线P0P1为被裁剪线段,裁剪过程如下:

计算机图形学规则形体,计算机图形学教案相关推荐

  1. 计算机图形学规则形体,计算机图形学 三维形体的表示ppt课件.ppt

    <计算机图形学 三维形体的表示ppt课件.ppt>由会员分享,提供在线免费全文阅读可下载,此文档格式为ppt,更多相关<计算机图形学 三维形体的表示ppt课件.ppt>文档请在 ...

  2. 计算机图形学生活应用,计算机图形学的应用实例(计算机图形作业).doc

    计算机图形学的应用实例(计算机图形作业).doc 计算机图形学大作业 计算机图形学的应用实例 班级: 学号: 姓名: 2012-03-12 计算机图形学的应用实例 一.计算机图像学简介 计算机图形学是 ...

  3. 计算机图形学考题答案,计算机图形学考题答案.doc

    文档介绍: .页眉. .页脚. 1 点阵法与参数法点阵法: 用具有颜色信息的点阵来表示图形的一种方法, 它强调图形由哪些点组成, 并具有什么灰度或色彩; 参数法: 以计算机中所记录图形的形状参数与属性 ...

  4. 计算机图形学透视投影知识点,计算机图形学

    计算机图形学期末复习 第一章 绪论 计算机图形学定义:计算机图形学是研究通过计算机将数据转换成图形,并在专门显示设备上显示的原理.方法和技术 第二章 计算机设备及硬件系统 知识点 阴极射线管(CRT) ...

  5. 现代计算机图形学入门ppt,计算机图形学完整课件.ppt

    计算机图形学完整课件.ppt (326页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 计算机图形学 第一章.绪论第二章.基本图形生成原理第 ...

  6. 计算机图形学三大应用领域,计算机图形学作业

    计算机图形学作业题 1. 计算机中由图形的形状参数(方程或分析表达式的系数,线段的端点坐标等)加属性参数(颜色.线型等)来表示图形称图形的参数表示:枚举出图形中所有的点称图形的点阵表示,简称为图像(数 ...

  7. 广联达计算机图形学面试题,计算机图形学 面试题.docx

    计算机图形学 面试题 计算机图形学 面试题 第一章概述;1.计算机图形学研究的是什么?;计算机图形学研究的是通过计算机将数据转换为图形,;2.计算机图形学处理的图形有哪些?;计算机图形学处理的图形有: ...

  8. 计算机图学概念,计算机图形学(概念).doc

    计算机图形学(概念) 1.计算机图形学(Computer Graphics) 计算机图形学是研究怎样利用计算机来产生存储和处理图形的原理.方法和技术的一门学科. IEEE定义:Computer gra ...

  9. 吉林大学计算机图形学实验_计算机图形学学习笔记(一):图形学概论

    第一章 计算机图形学概论 1.1 全书概述 图形学基本知识 光栅图形学 扫描转换.区域填充.裁减.反走样.消隐 二维.三维图形变换及观察 几何造型 参数曲线曲面基本概念.Bezier曲线曲面.B样条曲 ...

最新文章

  1. 一个神秘URL酿大祸,差点让我背锅!
  2. eeglab教程系列(14)-Working with ICA Components
  3. 不属于python开发用户界面第三方库的是-模拟试卷C【单项选择题】
  4. 10月29日云栖精选夜读 | 十条精进原则,给迷茫于劳而无功的技术人
  5. 博图编写温度程序_NTC测量温度的两个不同的数值转换程序,你会选择哪一个
  6. boost::allocator_max_size的实例
  7. 【SDL】SDL学习笔记二 定时器
  8. 系统测试相关知识笔记
  9. 二次重建基本完成辣!
  10. 4014-基于邻接表的长度为k的简单路径的求解(C++,附思路)
  11. Redis:分布式锁Watch
  12. 【转】JavaScript中的匿名函数及函数的闭包
  13. 在Linux下安装bind服务,在Linux系统下安装DNS服务器BIND
  14. 增强 for 循环 和 普通for 循环的 区别总结
  15. 谷歌被墙,如何给谷歌浏览器添加迅雷下载插件
  16. 安卓模拟器刷小米系统_小米5x原生rom系统刷机-小米5X MIUI10刷机包下载V9.7.21最新版-西西软件下载...
  17. 数据安全治理方法导论
  18. linux so lazyload,linux函数深入探索——open函数打开文件是否将文件内容加载到内存空间...
  19. vue + echarts 之世界地图
  20. 编程笔试(解析及代码实现):求和为N的正整数序列之实现一个函数,输入为一个正整数N (比如100),输出为所有和等于N的[连续]正整数序列

热门文章

  1. 固态函数不正确_固态硬盘可靠吗?
  2. Vue2学习小记-给Vue2路由导航钩子和axios拦截器做个封装 1
  3. atcoder 2017Code festival C ——D题 Yet Another Palindrome Partitioning(思维+dp)
  4. MySQL5.7重置root密码
  5. BEAST 漏洞相关
  6. 二维码_encode与decode
  7. Oracle学习之DATAGUARD(八) Switchover与failover
  8. [转]一张图帮你搞定职业规划
  9. Silverlight 2 DataGrid December 2008
  10. OpenCV-获取图像中直线上的数据