导航:首页 > 源码编译 > 实现线条连续移动的算法

实现线条连续移动的算法

发布时间:2023-09-23 05:28:04

⑴ 直线扫描算法(个人总结,仅供参考)

直线扫描算法主要包含三种算法,DDA算法、中点画线算法、Bresenham直线算法。

这三种算法都要事先要确定两个端点(起点和终点),从起点开始每次走一步,每走一步画一个点,直至到达终点。

这个前提也比较好理解,因为如果朝斜率大的方向走,可能没走几步就走完了,那画出来的直线就是离散的。

以下我们宏隐只讨论朝x方向移动的情况。(y方向的情况是一样的)

DDA算法实际上是根据 斜截式直线方程 来画的。

但这么做实际上是比较消耗性能的,因为斜截式方程, 它涉及到了乘法运算 。因此我们需要通过 增量思想 对它进行优化。

这样转换后,我们就可以根据当前的位置来找到下一步的位置,且每次计算只需要进行一次 浮点的加法运算 ,一次四舍五入取整即蔽历厅可。

中点画线算法实际上是根据 一般式直线方程 来画的。它是通过判断中点在直线的下方还是上方,来决定下一步的坐标位置。

但这样也是非常消耗性能的,把中点带入F(x, y)中,会涉及到2个乘法,4个加法。我们依然可以通过增量的方式来对它进行优化。

这样我们就优化到每次只需要一次 整数加法 即可,且还不需要四舍五入。因此它要更优于DDA算法。

Breseham算法是通过比较d(交点与交点下方最近的点的距离)来进行选择的。d每次按照k的大小增加。

但这么做依旧和DDA算法一样,会涉及到浮点数k的加法。我们可以通过 换元的方式 对它进行下优化。

这样就能使得每次进行一次或两次的 整数加法运算 ,不需要四舍五入。效率高于DDA,低于中点画线算法。

但Bresenham算法不依赖直线方程,使得它能有更宽泛烂中的适用范围。

阅读全文

与实现线条连续移动的算法相关的资料

热点内容
ping命令2个ip 浏览:220
怎么御载软件商店加密应用 浏览:804
小周服务器为什么进不去 浏览:298
游戏制作用什么编译语言 浏览:639
矢量图怎么加密码 浏览:668
知到app怎么刷课时 浏览:600
三程序员那么可爱 浏览:954
有票app怎么退票 浏览:602
cmd命令连接oracle数据库 浏览:666
postgresqllinux命令 浏览:510
编译原理翻译文法的功能 浏览:442
51单片机LCD电路 浏览:891
我的世界如何玩宝可梦服务器 浏览:261
天天象棋app怎么找不到了 浏览:661
如何格式化内存卡上加密的照片 浏览:35
上汽大众app哪里上传发票 浏览:118
手机电池加密屏幕加密 浏览:388
基于51系列单片机的智能家居 浏览:585
看新闻看哪个app 浏览:274
android编辑对话框 浏览:309