计算机图形学学习(一) 直线Bresenham算法讲解及matlab实现

Bresenham算法介绍

Bresenham是计算机图形学领域使用最广泛的直线扫描转换算法,其核心思想是由误差项符号决定下一个像素点取右边的一个点还是右上的一个点

Bresenham算法实现

  • 这里只讲最简单的一种情况:直线位于第一象限

  • 设直线起点终点分别为(x0,y0)、(x1,y1),直线方程为y=kx+b,k=(y1-y0)/(x1-x0)

  • 设当前像素点为(xi,yi),当x每次增加一个像素点时下一个像素点坐标为(xi+1,yi)或(xi+1,yi+1)

  • 下一个点坐标由直线在xi+1处与yi、yi+1的距离d1、d2决定,d1=y-yi=kx+b-kxi=k(xi+1)+b-yi
    d2=(yi+1)-y=yi+1-[(k(xi+1)+b)]
    在这里插入图片描述
    如果d1-d2>0,则下一个像素点坐标为(xi+1,yi+1),否则为(xi+1,yi)

  • 令Pi=(d1-d2)Δx,将k=Δy/Δx带入Pi
    Pi=2xiΔy-2yiΔx+2Δy+(2b-1)Δx
    d1-d2是用于判断符号的误差项,因为在第一象限,所以Δx恒大于0,Pi仍可用于判断符号的误差,且计算仅包含整数运算,更利于计算机运算

  • ∵Pi=2xiΔy-2yi

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值