Bresenham直线算法

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

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

并且假定


推导过程

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的思想,就很容易做下去了。我们以下图为例:

计算过程如下:


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


实际计算步骤:

如上图中例图所示。

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值