前言


  在数学上,理想的直线是没有宽度的,它是由无数个点构成的集合。对直线进行光栅化时,只能在显示器说给定的有限个像素组成的矩阵中,确定最佳逼近于该直线的一组像素,并且按扫描线顺序。

  本节介绍绘制线宽为一个像素的直线的三个常用算法:数值微分中点画线Bresenham算法

 

数值微分法


  已知过端点 P0(x0, y0),P1(x1, y1) 的直线段 L(P0, P1);直线斜率为 k = (y1 - y0) / (x1 - x0)。

  于是 yi+1 = kxi+1 + b。

  于是,x每增加1,y就增加k。画点的时候还需要判断 int(y+0.5) 向下取整。

seo优化培训,网络推广培训,网络营销培训,SEM培训,网络优化,在线营销培训

 1 // 数值微分法,伪代码 2 void DDAline(int x0, int y0, int x1, int y1) { 3     int dx, dy, x=x0, y=y0; 4     double k; 5     dx = x0 - x1;&