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

实现线条连续移动的算法

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

阅读全文

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

热点内容
西数硬件加密和闪迪软件加密 浏览:716
声控足球解压黏土教程 浏览:639
linux下的嵌入式开发 浏览:173
电脑3d加速命令 浏览:105
加密手机号码是怎么回事 浏览:921
女程序员真实图片 浏览:696
pic单片机烧写 浏览:814
linuxping结果 浏览:196
单片机采集负电压 浏览:407
服务器收件什么意思 浏览:893
单片机发数组 浏览:884
魔方虚拟主机销售系统源码 浏览:709
rsa验签php源码 浏览:514
github怎么直接打开源码 浏览:529
和家亲app怎么下载不了了 浏览:728
蓝屏程序员 浏览:78
androidinflatexml 浏览:489
魔兽争霸2下载好了怎么解压 浏览:920
怎么做少女心解压本 浏览:203
php刷新cookie 浏览:737