直线段与圆弧光栅化的计算方法
直线段光栅化
数值微分法(DDA算法)
计算方法:
x = , ,
当 时:
当 时:
当 时:
算法评价:
- 比直接使用更快
- 耗时(增加了浮点数运算,除法运算,取整操作等,不利于硬件实现)
划线算法(重点掌握)
计算方法:
x = , ,
- 当 时:
绘制点的递推公式:
误差项递推公式:
-
当 时:
绘制点的递推公式: 误差项递推公式:
-
当 时:
绘制点的递推公式: 误差项递推公式:
-
注意: 感觉期末只可能考察斜率在 ~之间且起点从原点开始的
若dx > 0, dy > 0, 0< m < 1:
xi = x1, yi = y1
第一项: pi = 2dy -dx
若pi < 0: pi = pi + 2dy, yi = yi
若pi > 0: pi = pi + 2dy - 2dx, yi = yi + 1
xi = xi + 1
输出: (xi, yi)
若dx > 0, dy > 0, m > 1:
xi = x1, yi = y1
第一项: pi = 2dx -dy
若pi < 0: pi = pi + 2dx, xi = xi
若pi > 0: pi = pi + 2dx - 2dy, xi = xi + 1
yi = yi + 1
输出: (xi, yi)
若dx > 0, dy < 0, 0< m < 1:
xi = x1, yi = -y1
第一项: pi = 2dy -dx
若pi < 0: pi = pi + 2dy, yi = yi
若pi > 0: pi = pi + 2dy - 2dx, yi = yi + 1
xi = xi + 1
输出: (xi, -yi)
若dx > 0, dy < 0, m > 1:
xi = x1, yi = -y1
第一项: pi = 2dx -dy
若pi < 0: pi = pi + 2dx, xi = xi
若pi > 0: pi = pi + 2dx - 2dy, xi = xi + 1
yi = yi + 1
输出: (xi, -yi)
若dx < 0, dy > 0, 0< m < 1:
xi = -x1, yi = y1
第一项: pi = 2dy -dx
若pi < 0: pi = pi + 2dy, yi = yi
若pi > 0: pi = pi + 2dy - 2dx, yi = yi + 1
xi = xi + 1
输出: (-xi, yi)
若dx < 0, dy > 0, m > 1:
xi = -x1, yi = y1
第一项: pi = 2dx -dy
若pi < 0: pi = pi + 2dx, xi = xi
若pi > 0: pi = pi + 2dx - 2dy, xi = xi + 1
yi = yi + 1
输出: (-xi, yi)
若dx < 0, dy < 0, 0< m < 1:
xi = -x1, yi = -y1
第一项: pi = 2dy -dx
若pi < 0: pi = pi + 2dy, yi = yi
若pi > 0: pi = pi + 2dy - 2dx, yi = yi + 1
xi = xi + 1
输出: (-xi, -yi)
若dx < 0, dy < 0, m > 1:
xi = -x1, yi = -y1
第一项: pi = 2dx -dy
若pi < 0: pi = pi + 2dx, xi = xi
若pi > 0: pi = pi + 2dx - 2dy, xi = xi + 1
yi = yi + 1
输出: (-xi, -yi)
评价方法:
- 只有整数运算,不含乘除法
- 只有加法和乘2运算,效率高
中点划线算法(重点掌握)
计算方法:(假定 ,是最大位移方向)
绘制点的递推公式:
误差项递推公式:
改进的计算方法:(假定 ,是最大位移方向)
用 代替 ,令
绘制点的递推公式:
误差项递推公式:
圆弧光栅化
八分法画圆
中点画圆算法
计算方法:
- 误差项
- 时,下一点取
- 时,下一点取
改进计算方法:
用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?