文档介绍:第四章基本图形生成算法
用某种颜色编码的图形生成的基本原理: 在光栅显示器上的图形是一组象素的集合,其中每个象素都具有某种颜色的编码,这些象素(及其颜色)是通过对图形的扫描得到的。
图形的扫描过程称为扫描转换或光栅化
主要内容:基本图形的扫描转换如线,圆,椭圆的扫描转换,及封闭的多边形的填充问题,字符处理,图形裁剪、反走样技术等。
概述:--图形生成的基本原理,主要内容
Mathemtaical Equation and Rasterized pixels
数学方程
光栅化的象素点
第四章基本图形生成算法
Step1:确定图形的象素
Step2:确定图形的颜色等属性,并对象素做写操作
概述:--图形扫描转换的两个步骤
任务一:因Step2调用图形设备驱动程序完成,故仅考虑Step1的任务,即确定最能反映图形特征的象素集合。--如何扫描图形??
例如:1D图形的扫描得到(线宽)象素序列,2D图形的扫描得到一个封闭的区域--边界和内部填充图形或颜色。
第四章基本图形生成算法
概述:
任务二:由于图形要在一个窗口中显示,所以还要确定图形的范围--图形的窗口裁剪技术
注:窗口裁剪应在图形扫描前进行。
裁剪窗口
象素点
第四章基本图形生成算法
概述:
任务三:象素序列的锯齿形引起走样,所以要用反走样技术克服图形走样。
说明:提高显示器的分辨率可以部分克服反走样但成本太高。
反走样算法基本原理:尽量减少相邻象素点的亮度或或颜色的差别。
例如:
第四章基本图形生成算法
直线生成算法
直线段扫描转换:在扫描过程中,求与直线段最接近的像素点集。(误差是多少???)
一个象素宽度的直线扫描的三个算法(假设:直线段宽度为1个象素点,斜率-1<=k<=1)
数值微分法(DDA)
中点画线法
Bresenham算法。
掌握:
算法思想
算法伪代码
上机编程运行的源代码(C or C++/Visual C++ )
./course/graphics03/
基本思路:
问题模型
直线的斜率方程
起点
终点
问题求解步骤
从起点
到终点()
数值微分(DDA)法
已知过端点P0 (x0, y0), P1(x1, y1)的直线段L(P0, P1),;直线斜率为,画线过程从x
的左端点x0开始,向x右端点步进,步长=1(个象素),计算相应的y坐标y=kx+B;取象素点(x, round(y))作为当前点的坐标。计算
    yi+1 = kxi+1+B   = kxi+B+kDx   = yi+kDx
当Dx=1 yi+1 = yi+k, 即:当x每递增1,y递增k(直线斜率).
round(yi)=int(yi+)