e′=2×e×dx
第 3 章 基本图形的生成
改进的整数型Bresenham画线算法如下: void InterBresenhamLine (int x0, int y0, int x1, int y1, int color) { int x, y, dx, dy, e;
dx=x1-x0, dy=y1-y0, e=-dx; x=x0, y=y0; while(x<=x1) {putpixel (x, y, color);
第 3 章 基本图形的生成
首先, 构造判别式: d=F(M)=F(xp+1, yp+0.5)=a(xp+1)+b(yp+0.5)+c ① 当d<0时, M在直线下方, 取P2为下一个像素; ② 当d>0时, M在直线上方, 取P1为下一个像素; ③ 当d=0时, 选P1或P2均可, 约定取P1为下一个像素。
第 3 章 基本图形的生成 图3-1 DDA算法示意图
第 3 章 基本图形的生成
例: 用DDA方法光栅化P0(0, 0)和P1(5, 2)两点间的直线段。
x
int(y+0.5) y+0.5
0
0
0+0.5
1
0
0.4+0.5
2
1
0.8+0.5
3
1
1.2+0.5
4
2
1.6+0.5
5
2
2.0+0.5
第 3 章 基本图形的生成 DDA画线算法如下: void DDALine(int x0, int y0, int x1, int y1, int color) { int x;