Bresenham算法实现任意斜率直线绘制

本文详细介绍了Bresenham算法如何用于绘制不同斜率的直线,包括斜率在0-1之间、大于1、在(-1,0)之间及小于-1的情况。通过算法推导和代码实现,展示了在不同斜率条件下如何优化直线绘制的效率。" 91439439,8257123,MySQL 5.7中的JSON字段操作指南,"['数据库', 'MySQL', 'JSON']
摘要由CSDN通过智能技术生成

参考《计算机图形学》 Donald.Hearn

 

书中给出了斜率k在0-1之间的推导过程

在k>=1时以y方向为单位步长递增,此时有x=(y-b)/b;

d(low)=x-x(k)=( y(k+1)-b )/m-x(k);

d(upper)=x(k+1)-x=x(k)+1-( y(k+1)-b )/m;

p(k)=dx*(d(low)-d(upper))=2*dx*(y(k)+1-b)-2*dy*x(k)-dx;

可以推出

p(k+1)=p(k)+2*dx-2*dy(x(k+1)-x(k));

其中x(k+1)-x(k)的值取决于p(k)的符号

将直线方程式和斜率m=dy/dx带入p(k)的表达式可以得出

p(0)=dy,由此可以写出斜率大于1时的实现,

同理可以按此方法得出斜率在(-1,0)和斜率小于-1时的情况,或者可以根据对称性得出

 

  • 7
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值