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

实现线条连续移动的算法

发布时间: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算法不依赖直线方程,使得它能有更宽泛烂中的适用范围。

阅读全文

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

热点内容
命令输入框 浏览:890
冰箱压缩机发烫噪音 浏览:83
单片机栈溢出符号 浏览:328
命令与征服修改器怎么用 浏览:483
什么app比较费钱 浏览:830
为什么同一个app的功能不一样 浏览:232
小型工作室用什么服务器好 浏览:995
程序员的兴趣 浏览:413
华为服务器有什么好 浏览:701
程序员和测试之间的关系 浏览:945
加密蚊帐什么意思 浏览:151
javalistclear 浏览:607
哪个app上民宿多靠谱 浏览:827
重庆服务器租用哪里有云服务器 浏览:453
土星模拟器文件夹 浏览:902
文件夹文件袋文件盒 浏览:695
云服务器打开f8指令 浏览:243
盈透证券加密币 浏览:72
阿里云服务器初始密码怎么修改 浏览:266
服务器怎么设定公用网络 浏览:99