整数运算、高效率的直线绘制算法 - 与DDA算法对比
| 特性 | Bresenham算法 | DDA算法 |
|---|---|---|
| 运算类型 | 只用整数(加减法、位移) | 浮点数(除法、加法) |
| 速度 | 更快(整数运算快) | 较慢(浮点运算慢) |
| 精度 | 精确(无浮点误差) | 可能有浮点累积误差 |
| 核心思想 | 误差项判断(增量决策) | 微分方程(斜率累加) |
| 算法复杂度 | 稍复杂(需要理解误差项) | 简单直观 |
| 应用场景 | 现代图形硬件、游戏引擎 | 教学演示、理解原理 |
核心思想:使用整数误差项来决定下一个像素的位置。
dx = x1 - x0, dy = y1 - y0p = 2*dy - dxp < 0:选择右边的像素(y不变),p += 2*dyp >= 0:选择右上的像素(y+1),p += 2*dy - 2*dx为什么快?因为全程只有整数的加减法和比较,没有除法和浮点运算!
误差项的含义:代表当前点到理想直线的"距离误差"×2×dx,通过误差正负判断应该选上面还是下面的像素。