Bresenham直线算法

Bresenham算法是一种画直线的算法。

算法原理

设直线斜截式为 y = kx + b(-1 <= k <= 1),当x增加1时,y增加k, 而y为整数,所以要判断y是否增加1,这个过程可以用一个变量p来判断,当x + 1p + k,判断p 与 0.5的关系,当p >= 0.5y + 1,并且 p - 1,重复此项过程即可。

为了使代码不出现浮点数,可以对p做放缩变换,对p所在的系统乘上2*dx(dx为所画直线的x轴长度),此时判断值y是否增加条件为p是否大于等于dx,p每次增加的值k变为k*(2*dx) = dyy + 1后 p 减去 2 * dx

为了便于计算,可以在初始化时令p为-0.5,也就是-dx,这样只需要判断p是否大于0

当k为负数的时候只需要y + 1,变为y - 1即可

当k的绝对值大于1时,y的增速较快,此时可以以y为自变量,原理同上。

MFC绘图代码

// CBresenhamView 绘图

void CBresenhamView::Bline(CDC* pDC, int x0, int y0, int x1, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值