当F(M)<0时,M在圆内,P1距离圆弧近,取P1 当F(M)>0时,M在圆外,P2距离圆弧近,取P2 DDA画圆法
圆的内接正多边形逼近法 圆的等面积正多边形逼近法
3.4 椭圆的生成算法
中心在原点、轴对齐的椭圆的非参数化方程为:
上式可用隐式方程表示为:
由于椭圆的对称性,仅考虑在第一象限的椭圆弧即可。 逐点绘制法:
与逐点绘制圆类似,只是把判决函数换掉就可以了。 中点绘制法:
椭圆弧被分成二部分,分别使用中点法判断。
参数方程绘制法:
根据椭圆的参数方程,直接绘制。
3.5 其它二次曲线绘制举例
前面介绍了几种绘制圆和椭圆的一些方法,其中逐点法是我们的重点,本节再举一例子,以逐点绘制方法为指导思想,说明简单抛物线的绘制。
思考题:
1. 试给出逐点法绘制圆弧在第二象限内逆时针绘制的推导过程和源代码。
2. 试给出不在直线上的三点,如何绘制经过这三点的圆?请给出推导过程和源代码说明。
3. 请给出逐点法绘制椭圆的推导过程和源代码,要求逆时针绘制第一象限的椭圆弧。
4. 绘制出一段抛物线,给出推导过程和源代码。
5. 比较中点法绘制圆和完备的Bresenham方法绘制圆的一些不同点,主要是误差区别。
6. 请用参数形式绘制圆,椭圆,并给出源代码说明。
7. 本章介绍的都是绘制水平椭圆或竖直椭圆,请思考一下如何绘制任意的椭圆?请给出思路。
第四章 多边形
教学学时:4课时 教学目的与要求:
让学生初步掌握多边形的定义,掌握多边形扫描转换的一些算法,掌握区域填充的种子填充递归算法并编程实现,掌握算法的理论原理,学会从理论上的算法转换到编译程序中的代码实现这个思维过程,能够分析基本算法的优缺点,掌握算法的改良后适合计算机实现的算法,最后了解多边形图案区域填充,反走样方法原理。
教学重点:扫描线填充算法,边填充算法,栅栏填充算法,种子填充算法。 教学内容:
4.1 多边形的定义
定义:一系列首尾相连的线段构成的图形。 线段 -------- 边 端点 -------- 顶点
4.1 多边形的定义 4.2 多边形的扫描转换 4.3 区域填充(种子填充算法) 4.4 反走样
一般情况:多边形是封闭的
多边形分为凸多边形、凹多边形二种
凸多边形:连多边形内任意两点的线段,该线段上的点均在多边形内。
计算机生成的物体常常可以用若干多边形来描述,有些非多边形的
物体,也可以用多边形来逼近。比如上一章二次曲线的绘制我们了解了可以用多边形去逼近圆。在多边形生成以后,就可以利用光栅显示系统对其内部区域进行填充。
那么多边形是如何在系统中如何描述的呢? 顶点表示 点阵表示
顶点表示:用多边形顶点的序列来刻划多边形。直观、几何意义强、
占内存少;缺点是不能直接用于面着色。
点阵表示:用位于多边形内的象素的集合来刻划多边形。便于运用
帧缓冲存储器表示图形,易于面着色。缺点是失去了许多重要的几何信息;
4.2多边形的扫描转换
什么是多边形的扫描转换?
从多边形顶点信息到该多边形点阵表示的转换——多边形的扫描转
换,也就是从多边形的给定边界出发,求出位于其内部的各个象素,并给帧缓冲器内的各个对应元素设置相应的灰度和颜色,通常称这种过程为多边形的扫描转换(又称多边形的填充)。
几种方法: 逐点判断法; 扫描线算法; 边填充法; 栅栏填充法; 边界标志法。 算法思想:
逐个象素点判别,确定它们是否在多边形内,从而来决
定是否进行着色。
如何判断点在多边形的内外关系?
逐点判断法:
1)累计角度法(转角和法); 2)射线法; 3)符号法; 扫描线算法:
扫描线算法是多边形扫描转换的常用算法。与逐点判断算法相比,扫描线算法充分利用了相邻象素之间的连贯性,避免了对象素的逐点判断和反复求交的运算,达到了减少了计算量和提高速度的目的。
开发和利用相邻象素之间的连贯性是光栅图形算法研究的重要内容。扫描线算法综合利用了区域的连贯性、扫描线连贯性和边的连贯性等三种形式的连贯性
基本思想:
按扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的象素,即完成填充工作。 ?
对于一条扫描线填充过程可以分为四个步骤: 1. 求交 2. 排序
相关推荐: