图形学(9)画线

本文介绍了计算机图形学中的两种常用画线算法——DDA算法和Bresenham算法。DDA算法基于直线微分方程,通过步长计算坐标,简化了乘法但仍有取整和浮点运算。Bresenham算法则通过整数增量计算,避免了浮点运算,通过决策参数判断像素选择,适用于不同斜率的直线。
摘要由CSDN通过智能技术生成

画线算法

1. 计算机画线

真实的直线应该是连续的,但是计算机不可能显示出完全连续平滑的直线,于是计算机用一系列 离散化的像素点 来表示直线
这里写图片描述
(《计算机图形学的概念与方法》柳朝阳)

2. 常用画线算法

2.1 DDA算法

这里写图片描述

DDA是一种基于直线的 微分方程 来生成直线的方法

  1. 基本的直线微分: dydx=k

  2. 跟据步长(也即像素数目)即可计算出 xy 坐标:
    步长取 Stepxyi+1=yi+k
    OR
    步长取 Stepyxi+1=xi+1k

  3. 其中步长取 Stepx 还是 Stepy
    考虑两端点之间水平距离 |Δx|=|x2x1| 与竖直距离 |Δy|=|y2y1|
    绝对值大 的确定步长

  4. 从起始位置 (x1,y1) 开始, 按照步长,沿线段路径计算每一步下一个像素的位置

  5. 调整每一步的 x y ,逐一绘制余下像素。

DDA算法 比起根据 直线方程计算离散取样 的方法省去了乘法,加快了计算。
但是 取整操作浮点运算 仍然十分费时。

2.2 Bresenham算法

该算法仅使用增量整数计算

这里写图片描述

Bresenham通过计算两像素与实际线段的偏移比值的整型参数的符号比较来确定所取像素

  1. 当斜率K大于1时,在Y方向上以单位步长移动,计算x值,
    当斜率在0到1 之间时,在X方向上以单位步长移动。

  2. 其中步长取 Stepx 还是

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值