多段DDA直线扫描转换算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件时空
您的论文得到相关企业家品评
多段 !!" 直线扫描转换算法
! "#$% &’ (%$%)*+#&$ ,-.&)#+/0 1*2%3 &$ 45-+#62%.0%$+ 778 9:*$ ;&$<%)2#&$
! 涪陵师范学院 # 王 晓 云
"#$% ! &’#()*$
摘要 ! 在 传 统 ++, 直 线 扫 描 转 换 算 法 的 基 础 上 " 提 出 了 一 种 新 的 加 速 算 法 "该 算 法 通 过 寻 找 直 线 的 最 小 生 成 段 "利 用 最 小生成段的平移复制" 从而提高了整条直线扫描转换的速 度% 关键字 ! 加速的 ""# 算法 $ 最小生成段 $ 平移复制 文献标识码 * 中图分类号 %&’() 文章编号 +),,-.,/0,12,,34,5.,,67.,2
需 要 一 次 整 数 加 法 $由 于 运 算 量 少 $更 重 要 的 是 采 用 整数计算 $ 效率得到很大的提高 % 表示 ,,- 加速算法计算 2 个点需要的 时间 ’20 表示重复段的点数 ’% 表示重复的段数 ’@:1 表 示计算一次浮点加减法 所用的时间 ’@0 表示计算一 次
加速
其中 &@
为两 次浮点加法 $一 次 取 整 计 算 $其 它 的 递 增 量 计 算 及斜率计算等可忽略 % 其中 &@,,-(2+ 表示 ,,- 算法计算 2 个点需 要的时 间 ’@:1 表示计算一次浮点加法所用的时间 ’@0 表示计 算 一 次 取 整 所 用 的 时 间 ’!@$ 表 示 每 一 点 计 算 中 的 其 它操作用时 ’!@,,- 表示初始化等操作所用的时间 % 加速算法效率分析 & 加速算 法计算复杂 度同样为
2 加 速 ""* 算 法
数 值 微 分 法 &++, 法 # 是 绘 制 直 线 最 有 效 的 方 法 之一 % 设 直 线 过 !CD@)DE 和 !C$@)$E 其 方 程 为 ’)F#CG1 $ 斜 率
’ 算法设计
设直线的两个 端点分别为 &CD@)D#$&C$$)$#$ 对 于 水 平线 $ 垂直线以及 SL" 的直线不必经过扫描转换 $ 就可 以直接生成线段 % 以下算法讨论的是直线斜率小于等 于 I 的情况@ 当大于等于 I 时只交换 C@) 即可 %
) 引言
直线是生成各种图形的基 本元素 $ 直线 生成算法 是图形学中最基本的算法பைடு நூலகம்% 数学上的理想直线是没有 宽度的 $ 有无数个点构成的集合 % 当对直 线进行光栅 化时$ 只能在显示器所给定的有限象素组成的矩阵 中 $ 确定最佳逼近直线的一组象素 $ 并且按扫描顺 序 $ 用当前写方式对这些象素进行操作 $ 这就是直 线的扫 描转换 % 直线生成算法经过多年的研究 $ 出现 了很多 经典的算法 $++, &+’%’.#6 +’33040$.’#6 ,$#6)B04 # 算法就 是其中之一 % 随着计算机应用技术的发展 $ 加速 传统 直线绘制算法有着重要的实际意义 % 文献中用双步长 来选定所画的象素 $ 提高了画线的效率 % 文献讨论了 直线起始端点为原点 $ 终点坐标和存在公约数的 条件 下利用像素点的对称性实现了直线的分段绘制 % 本文 基于 ++, 算法 $ 对该算法进行改进 $ 通过寻找 直线的 最 小 生 成 段 $利 用 最 小 生 成 段 平 移 复 制 $能 够 快 速 地 完成整条直线的扫描转换 % 实践证明这是一个高效率 的算法 %
技 术 创 新
根据定理和推论 $ 找到第一对满足 条件的点是第 I 个点和第 II 个 点 $ 这两点之 间的线 段 即 是 整 条 直 线 可 重 复 的 最 小 生 成 段 @C 轴 () 轴 的 平 移量分别为 /FID $:FQ% 以后的点可通过最小生成段平 移得到 % 如第 IP 个点通过第 P 个点平移 &ID@Q #$ 第 IR 个点通过第 R 个点平移 &ID@Q #$ 依次类推 $ 可画完所有 的点 %
$GG&$GHE C*DIJ K0</;02# L/=23 M N E ,/JO;3&P43’ 02QR3%324<; S323R<40/2 /: ;023P <21 Q0RQ;3PCMDE T/%’J43R U0P0/2# NR<’80QP# <21V%<S3# ’R/Q3PP02S# $WXH# AH (F<R+ Y AA$&AABE
电话 !010-62132436 "62192616 #T/F $ ! P LC 技术应用 200 例 "
技 术 创 新
>> 利用第 ’&$ 段生成第 ’ 段
图 $ 时间对比曲线
" 结论
通过分析可以 看到 $ 与传统 的 ,,- 算法相比 $ 加 速算法在开始阶段由于需要处理重复段判断 的问题 $ 速度较慢 $ 在这以后速度明显加快 % 而且重复 线段越 短 $ 重复段数越多 $ 其加速算法的优越性就越明显 %
中国自控网 !http://www.autocontrol.cn 邮局订阅号 !82-946 120 元 / 年 O TQ O
H#H!I $首先计算直线的斜率 ’
$ 其中 J
王晓云 : 讲师 & 编号 ’60103017 # 基金项目 ’国家自然科学基金资助项目
电话 !010-62132436 "62192616 #T/F $ ! 嵌入式系统应用精选 200 例 "
作者简介 & 王晓云 $ 男 $$WGA& $ 汉族 $ 讲师 $ 浙江大学 访 问学者 $ 主研方向为计算机图形学 % Z%<0;Y [56WA\P/!
8JEQ/% #$%&’ #&’(%) & I<2S K0</6J2 #%<;3 #8<2 #O/R2 02 $WGA# ’R3P324 R3P3<RQ8 10R3Q40/2 0P T/%’J43R SR<’80QP# Z%<0;Y [56WA\P/8JEQ/% *!+,++- 重庆涪陵师范学院计算机科学系. 王晓云 */01’2 %3 4%51&’0) 6780970:;&<89= >%)5?< 4%<<0=0: ;&<89=:4(%9=@89=:!+,++-.A?9=: B8?%C&9
./01 !023 (024 5"# 024 6"# 024 52# 024 62+ 7 024 #5#8#89 :;/<4 15#16#=$#69
取 整 所 用 的 时 间 ’!@* 表 示 第 一 段 每 一 点 计 算 中 的 其 它 操 作 用 时 ’@01 表 示 计 算 一 次 整 数 加 减 法 所 用 的 时 间 ’!@A 表 示 重 复 段 每 一 点 计 算 中 的 其 它 操 作 用 时 ’
参考文献
C$D 孙 家 广 E 计 算 机 图 形 学 ( 第 三 版 ) CFDE 北 京 & 清 华 大 学 出 版 社 # *""" &
! 效率分析
,,- 算 法 效 率 分 析 &,,- 算 法 采 用 简 单 的 重 复 叠 加 计 算 $ 其 计 算 复 杂 度 为 ?(2+ $ 每 一 个 点 的 计 算 量
*89:;<=:+ -$ ./0 1#20 (3 .4#5’.’($#6 ++, 74’$8’760 # 9*’8: #6! %(4’./; (3 ++, ;0./(5 <#2 ’$.4(5*805 ’$ ./’2 7#704= >) 3’$5! ’$% ./0 6’$0 ? 2 ;’$’;#6 1*’65 20%;0$.@ ./’2 #774(#8/ *2020 7#4#6606 ;(.’($ 4076’8#.0 ;’$’;#6 1*’65 20%;0$.= A(;7#4’$% <’./ ./0 8(;;($ #6%(4’./; (3 ++,@ ’. $0052 6022 8#68*6#.’($ #$5 /#2 3#2.04 27005= >?@ AB;C9! <==?D?;<:?C ""* <DEB;F:GH$ HFIFH<D 8JFDC 9?E! H?I:$ K<;<DD?D HB:FBI ;?KDF=<:?
C 从 KCDGD=LM 其 中 K M 表 示 取 整 # 开 始 到 KC$GD=LM 每 次 增 加 I$C 为整数运算 $ 计算 ) 的增量 $) 为浮点运算 $ 取 !C@ K)GD=LME 作绘制点 % 在直线的扫描转换过程中有些直线
可以通过部分平移而得到 $ 这样可加快 绘制速度提 高 效率 % 对于直线有如下定理 % 定 理 ’ 设 在 )F#CG1 上 的 点 !’@)’E 和 !N@)NE 满 足 )’ OK)’MF )NOK)NM $则对任意的整数 : $ 有 即 则点 !N@)NE 可通过 !’@)’E 平移 对任意的整数 : $ 点 得到 % 由上面定理可得下面 P 个推论 ’ 推论 I’ 设在直线 )F#CG1 上 $ 若点!’@)’E 和 !N@)NE 满足 @ 且 ’ON 的值最小 $ 则这两点之间 的 所有象素成为整条直线可重复的最小生成段 % 推论 P’ 设直线 对整数 ’ 从小到大每次增 I$ 若存在 ’ 满足条件 )’OK)’MF )CDOK)CDM$则!CD@)DE到 !C’@)’E 为最小生成段 % 从上可得只要出现一次满 足定理条件 $ 就可求出 最小生成段 $ 同时可求出平移量 &/@ : #$ 以后所有点都 可以通过前面的点平移得到 % 例 ’)FD=QCGI@ 计算可得下表 ’ 两点也满足上面条件 % 其几何意义是若点!’@)’E和!N@)NE满足条件 得到 @ 平移 !/@:E
( 投稿日期 Y*""]EAEX+ ( 修稿日期 Y*""]EBE$+
? (2+ $ 在开始的第一个重复段内计算与 ,,- 算法相
同 $ 但是多出了用于重复段判断的两次浮点减法 和一 次比较运算 % 在以后的线段复制过程中 $ 每一 个点只
中国自控网 !http://www.autocontrol.com.cn &WX& 120 元 / 年 邮局订阅号 !82-946 !!!
!@B 表示重复段每一段计算中的其它操作用时 ’!@ 加 速
表示初始化等操作所用的时间 % 因此当忽略其它用时后 $ 得 到时间随点 数变化的
>> 最小生成段的绘制
! !
比 较示 意 图 ( 如 图 $ )$ 直 线 为 ,,- 算 法 $ 折 线 为 加 速 算法 % (浮点加法用时为 *$ 取整用时为 $ $ 整数加法用 时为 $ $ 在重复段长度为 *" $ 总长度为 $"" 的条件下 )
您的论文得到两院院士关注
中 文 核 心 期 刊 ! 微 计 算 机 信 息 " ( 管 控 一 体 化 )2005 年 第 21 卷 第 8 期
设直线 ! 可以分为 !"#!$# # #!%&$ 共 % 段 $!" 为 最 小生成段 $!" 以后的每个点均可以由 !" 中的相应点平 移 实 现$但 在 算 法 设 计 过 程 中 $为 了 减 少 乘 法 次 数 采 用第 ’(’)$#*## #%&$+ 段由第 ’&$ 段平移实现 % 以 ,,算法为基础提出改进的算法如下 &
您的论文得到相关企业家品评
多段 !!" 直线扫描转换算法
! "#$% &’ (%$%)*+#&$ ,-.&)#+/0 1*2%3 &$ 45-+#62%.0%$+ 778 9:*$ ;&$<%)2#&$
! 涪陵师范学院 # 王 晓 云
"#$% ! &’#()*$
摘要 ! 在 传 统 ++, 直 线 扫 描 转 换 算 法 的 基 础 上 " 提 出 了 一 种 新 的 加 速 算 法 "该 算 法 通 过 寻 找 直 线 的 最 小 生 成 段 "利 用 最 小生成段的平移复制" 从而提高了整条直线扫描转换的速 度% 关键字 ! 加速的 ""# 算法 $ 最小生成段 $ 平移复制 文献标识码 * 中图分类号 %&’() 文章编号 +),,-.,/0,12,,34,5.,,67.,2
需 要 一 次 整 数 加 法 $由 于 运 算 量 少 $更 重 要 的 是 采 用 整数计算 $ 效率得到很大的提高 % 表示 ,,- 加速算法计算 2 个点需要的 时间 ’20 表示重复段的点数 ’% 表示重复的段数 ’@:1 表 示计算一次浮点加减法 所用的时间 ’@0 表示计算一 次
加速
其中 &@
为两 次浮点加法 $一 次 取 整 计 算 $其 它 的 递 增 量 计 算 及斜率计算等可忽略 % 其中 &@,,-(2+ 表示 ,,- 算法计算 2 个点需 要的时 间 ’@:1 表示计算一次浮点加法所用的时间 ’@0 表示计 算 一 次 取 整 所 用 的 时 间 ’!@$ 表 示 每 一 点 计 算 中 的 其 它操作用时 ’!@,,- 表示初始化等操作所用的时间 % 加速算法效率分析 & 加速算 法计算复杂 度同样为
2 加 速 ""* 算 法
数 值 微 分 法 &++, 法 # 是 绘 制 直 线 最 有 效 的 方 法 之一 % 设 直 线 过 !CD@)DE 和 !C$@)$E 其 方 程 为 ’)F#CG1 $ 斜 率
’ 算法设计
设直线的两个 端点分别为 &CD@)D#$&C$$)$#$ 对 于 水 平线 $ 垂直线以及 SL" 的直线不必经过扫描转换 $ 就可 以直接生成线段 % 以下算法讨论的是直线斜率小于等 于 I 的情况@ 当大于等于 I 时只交换 C@) 即可 %
) 引言
直线是生成各种图形的基 本元素 $ 直线 生成算法 是图形学中最基本的算法பைடு நூலகம்% 数学上的理想直线是没有 宽度的 $ 有无数个点构成的集合 % 当对直 线进行光栅 化时$ 只能在显示器所给定的有限象素组成的矩阵 中 $ 确定最佳逼近直线的一组象素 $ 并且按扫描顺 序 $ 用当前写方式对这些象素进行操作 $ 这就是直 线的扫 描转换 % 直线生成算法经过多年的研究 $ 出现 了很多 经典的算法 $++, &+’%’.#6 +’33040$.’#6 ,$#6)B04 # 算法就 是其中之一 % 随着计算机应用技术的发展 $ 加速 传统 直线绘制算法有着重要的实际意义 % 文献中用双步长 来选定所画的象素 $ 提高了画线的效率 % 文献讨论了 直线起始端点为原点 $ 终点坐标和存在公约数的 条件 下利用像素点的对称性实现了直线的分段绘制 % 本文 基于 ++, 算法 $ 对该算法进行改进 $ 通过寻找 直线的 最 小 生 成 段 $利 用 最 小 生 成 段 平 移 复 制 $能 够 快 速 地 完成整条直线的扫描转换 % 实践证明这是一个高效率 的算法 %
技 术 创 新
根据定理和推论 $ 找到第一对满足 条件的点是第 I 个点和第 II 个 点 $ 这两点之 间的线 段 即 是 整 条 直 线 可 重 复 的 最 小 生 成 段 @C 轴 () 轴 的 平 移量分别为 /FID $:FQ% 以后的点可通过最小生成段平 移得到 % 如第 IP 个点通过第 P 个点平移 &ID@Q #$ 第 IR 个点通过第 R 个点平移 &ID@Q #$ 依次类推 $ 可画完所有 的点 %
$GG&$GHE C*DIJ K0</;02# L/=23 M N E ,/JO;3&P43’ 02QR3%324<; S323R<40/2 /: ;023P <21 Q0RQ;3PCMDE T/%’J43R U0P0/2# NR<’80QP# <21V%<S3# ’R/Q3PP02S# $WXH# AH (F<R+ Y AA$&AABE
电话 !010-62132436 "62192616 #T/F $ ! P LC 技术应用 200 例 "
技 术 创 新
>> 利用第 ’&$ 段生成第 ’ 段
图 $ 时间对比曲线
" 结论
通过分析可以 看到 $ 与传统 的 ,,- 算法相比 $ 加 速算法在开始阶段由于需要处理重复段判断 的问题 $ 速度较慢 $ 在这以后速度明显加快 % 而且重复 线段越 短 $ 重复段数越多 $ 其加速算法的优越性就越明显 %
中国自控网 !http://www.autocontrol.cn 邮局订阅号 !82-946 120 元 / 年 O TQ O
H#H!I $首先计算直线的斜率 ’
$ 其中 J
王晓云 : 讲师 & 编号 ’60103017 # 基金项目 ’国家自然科学基金资助项目
电话 !010-62132436 "62192616 #T/F $ ! 嵌入式系统应用精选 200 例 "
作者简介 & 王晓云 $ 男 $$WGA& $ 汉族 $ 讲师 $ 浙江大学 访 问学者 $ 主研方向为计算机图形学 % Z%<0;Y [56WA\P/!
8JEQ/% #$%&’ #&’(%) & I<2S K0</6J2 #%<;3 #8<2 #O/R2 02 $WGA# ’R3P324 R3P3<RQ8 10R3Q40/2 0P T/%’J43R SR<’80QP# Z%<0;Y [56WA\P/8JEQ/% *!+,++- 重庆涪陵师范学院计算机科学系. 王晓云 */01’2 %3 4%51&’0) 6780970:;&<89= >%)5?< 4%<<0=0: ;&<89=:4(%9=@89=:!+,++-.A?9=: B8?%C&9
./01 !023 (024 5"# 024 6"# 024 52# 024 62+ 7 024 #5#8#89 :;/<4 15#16#=$#69
取 整 所 用 的 时 间 ’!@* 表 示 第 一 段 每 一 点 计 算 中 的 其 它 操 作 用 时 ’@01 表 示 计 算 一 次 整 数 加 减 法 所 用 的 时 间 ’!@A 表 示 重 复 段 每 一 点 计 算 中 的 其 它 操 作 用 时 ’
参考文献
C$D 孙 家 广 E 计 算 机 图 形 学 ( 第 三 版 ) CFDE 北 京 & 清 华 大 学 出 版 社 # *""" &
! 效率分析
,,- 算 法 效 率 分 析 &,,- 算 法 采 用 简 单 的 重 复 叠 加 计 算 $ 其 计 算 复 杂 度 为 ?(2+ $ 每 一 个 点 的 计 算 量
*89:;<=:+ -$ ./0 1#20 (3 .4#5’.’($#6 ++, 74’$8’760 # 9*’8: #6! %(4’./; (3 ++, ;0./(5 <#2 ’$.4(5*805 ’$ ./’2 7#704= >) 3’$5! ’$% ./0 6’$0 ? 2 ;’$’;#6 1*’65 20%;0$.@ ./’2 #774(#8/ *2020 7#4#6606 ;(.’($ 4076’8#.0 ;’$’;#6 1*’65 20%;0$.= A(;7#4’$% <’./ ./0 8(;;($ #6%(4’./; (3 ++,@ ’. $0052 6022 8#68*6#.’($ #$5 /#2 3#2.04 27005= >?@ AB;C9! <==?D?;<:?C ""* <DEB;F:GH$ HFIFH<D 8JFDC 9?E! H?I:$ K<;<DD?D HB:FBI ;?KDF=<:?
C 从 KCDGD=LM 其 中 K M 表 示 取 整 # 开 始 到 KC$GD=LM 每 次 增 加 I$C 为整数运算 $ 计算 ) 的增量 $) 为浮点运算 $ 取 !C@ K)GD=LME 作绘制点 % 在直线的扫描转换过程中有些直线
可以通过部分平移而得到 $ 这样可加快 绘制速度提 高 效率 % 对于直线有如下定理 % 定 理 ’ 设 在 )F#CG1 上 的 点 !’@)’E 和 !N@)NE 满 足 )’ OK)’MF )NOK)NM $则对任意的整数 : $ 有 即 则点 !N@)NE 可通过 !’@)’E 平移 对任意的整数 : $ 点 得到 % 由上面定理可得下面 P 个推论 ’ 推论 I’ 设在直线 )F#CG1 上 $ 若点!’@)’E 和 !N@)NE 满足 @ 且 ’ON 的值最小 $ 则这两点之间 的 所有象素成为整条直线可重复的最小生成段 % 推论 P’ 设直线 对整数 ’ 从小到大每次增 I$ 若存在 ’ 满足条件 )’OK)’MF )CDOK)CDM$则!CD@)DE到 !C’@)’E 为最小生成段 % 从上可得只要出现一次满 足定理条件 $ 就可求出 最小生成段 $ 同时可求出平移量 &/@ : #$ 以后所有点都 可以通过前面的点平移得到 % 例 ’)FD=QCGI@ 计算可得下表 ’ 两点也满足上面条件 % 其几何意义是若点!’@)’E和!N@)NE满足条件 得到 @ 平移 !/@:E
( 投稿日期 Y*""]EAEX+ ( 修稿日期 Y*""]EBE$+
? (2+ $ 在开始的第一个重复段内计算与 ,,- 算法相
同 $ 但是多出了用于重复段判断的两次浮点减法 和一 次比较运算 % 在以后的线段复制过程中 $ 每一 个点只
中国自控网 !http://www.autocontrol.com.cn &WX& 120 元 / 年 邮局订阅号 !82-946 !!!
!@B 表示重复段每一段计算中的其它操作用时 ’!@ 加 速
表示初始化等操作所用的时间 % 因此当忽略其它用时后 $ 得 到时间随点 数变化的
>> 最小生成段的绘制
! !
比 较示 意 图 ( 如 图 $ )$ 直 线 为 ,,- 算 法 $ 折 线 为 加 速 算法 % (浮点加法用时为 *$ 取整用时为 $ $ 整数加法用 时为 $ $ 在重复段长度为 *" $ 总长度为 $"" 的条件下 )
您的论文得到两院院士关注
中 文 核 心 期 刊 ! 微 计 算 机 信 息 " ( 管 控 一 体 化 )2005 年 第 21 卷 第 8 期
设直线 ! 可以分为 !"#!$# # #!%&$ 共 % 段 $!" 为 最 小生成段 $!" 以后的每个点均可以由 !" 中的相应点平 移 实 现$但 在 算 法 设 计 过 程 中 $为 了 减 少 乘 法 次 数 采 用第 ’(’)$#*## #%&$+ 段由第 ’&$ 段平移实现 % 以 ,,算法为基础提出改进的算法如下 &