该算法是图形学中绘制直线的一种经典算法。
给定的条件:坐标,试光栅化线段
。
并且假定:
推导过程:
1、列出直线方程:(使用两点式)
得到了我们需要的直线方程形式:
并且该方程满足:
2、Bresenham的核心思想:已知当前点坐标(x,y),因为直线的斜率已经规定了是小于等于1的,所以下一个点的坐标只可能是(x+1,y)或者(x+1,y+1)。那么我只需要判断(x+1,y+1/2)(中点)在直线的上方还是下方就可以了。
如果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)。记:
4、然后根据Bresenham的思想,就很容易做下去了。我们以下图为例:
计算过程如下:
这样就能进一步简化计算。
实际计算步骤:
如上图中例图所示。