引言:
计算机图形学中首先要解决的问题是基本图形的生成显示,由于整个屏幕是由离散的像素集组成。所以,在屏幕上现实生成图形一般分为两步:
一、确定最佳接近图形的像素集;
二、用指定的颜色或者其他属性写像素。
以下将介绍三种生成单像素宽度的算法,分别是:数值微分法(Digital Differential Analyzer,DDA)、中点画线法和Brensenham算法
数值微分法:
DDA算法的思想,是用数值方法解微分方程,即通过对x和y各增加一个小增量,计算下一步的x、y值。
1.0<k<1的DDA算法
已知线段端点P0(x0,y0),P1(x1,y1) ,直线的斜率k=dy/dx=(y1-y0)/(x1-x0);
从直线的起点P0向终点P1逼近,假设dy>0,dx>0;x从x0开始向x1画线,步长为1个单位(像素),对应y坐标为y=kx+b,由于y不一定是整数,所以要四舍五入取整,即
round(y)=int(y+0.5)。同样,对于x也要取整数运算round(x)=int(x+0.5)。