1
如何在指定的输出设备上根据坐标描述构造基本二维几何图形(点、直线、圆、椭圆、多边形域、字符串及其相关属性等)。
第五章基本图形生成算法
2
图形生成的概念
直线段的扫描转换
圆的扫描转换
多边形的扫描转换与区域填充
属性处理
反走样技术
在OpenGL中绘制图形
第五章基本图形生成算法
3
图形的生成:是在指定的输出设备上,根据坐标描述构造二维几何图形。
图形的扫描转换:在光栅显示器等数字设备上确定一个最佳逼近于图形的象素集的过程。
用象素点集逼近直线
图形生成的概念
4
直线的扫描转换
直线的绘制要求
(1)直线要直;
(2)直线的端点要准确,无定向性无断裂;
(3)直线的亮度、色泽要均匀;
(4)画线的速度要快;
(5)具有不同的色泽、亮度、线型等。
5
直线的扫描转换
解决的问题:给定直线两端点P0(x0,y0)和P1(x1,y1),画出该直线。
数值微分法
中点Bresenhan算法
改进的Bresenhan算法
6
数值微分法(DDA法)
直线的微分方程:
ε=1/max(|△x|,|△y|)
DDA算法原理
max(|△x|,|△y|)=|△x|,即|k|≤1的情况:
max(|△x|,|△y|)=|△y|,此时|k|≥1:
8
增量算法
增量算法:在一个迭代算法中,如果每一步的x、y值是用前一步的值加上一个增量来获得,则称为增量算法。
优点:直观、易实现(编程容易)
缺点:不利于用硬件实现
在此算法中,y、k必须是float,且每一步都必须对y进行舍入取整,不利于硬件实现。
数值微分法(DDA法)——特点
数值微分(DDA)法
void DDALine(int x0,int y0,int x1,int y1,int color)
int x;
float dx, dy, y, k;
dx, = x1-x0, dy=y1-y0;
k=dy/dx, y=y0;
for (x=x0; xx1, x++)
drawpixel (x, int(y+), color);
y=y+k;
数值微分(DDA)法(例子)
例:画直线段P0(0,0)--P1(5,2)
可得:K=
x int(y+) y+
0 0 0+
1 0 +
2 1 +
3 1 +
4 2 +
5 2 +
图形生成算法 来自淘豆网m.daumloan.com转载请标明出处.