Bresenham直线算法

该算法是图形学中绘制直线的一种经典算法。

给定的条件坐标,试光栅化线段

并且假定


推导过程

1、列出直线方程:(使用两点式)

Bresenham直线算法_第1张图片

得到了我们需要的直线方程形式:

并且该方程满足:

Bresenham直线算法_第2张图片

2、Bresenham的核心思想:已知当前点坐标(x,y),因为直线的斜率已经规定了是小于等于1的,所以下一个点的坐标只可能是(x+1,y)或者(x+1,y+1)。那么我只需要判断(x+1,y+1/2)(中点)在直线的上方还是下方就可以了。

Bresenham直线算法_第3张图片

如果F(中点)<0,则中点在直线上方,那么下一个点应该取(x+1,y);

   如果F(中点)>0,则中点在直线下方,那么下一个点应该取(x+1,y+1);


3、对于步骤2中下一个点的坐标只可能是(x+1,y)或者(x+1,y+1)的情况,我们可以写成(x,y)+(1,0)或者(x,y)+(1,1)。记:


Bresenham直线算法_第4张图片

4、然后根据Bresenham的思想,就很容易做下去了。我们以下图为例:Bresenham直线算法_第5张图片

计算过程如下:

Bresenham直线算法_第6张图片

  这样就能进一步简化计算。


实际计算步骤:

如上图中例图所示。

你可能感兴趣的:(图形学)