dda公司(dda)和bresenham算法(bresenham’s algorithm)的区别

数字差分算法(DDA)和Bresenhams算法是数字线绘制算法,在计算机图形学中用于绘制图形。以前,我们使用分析分析仪来计算像素,因此可以绘制线条。但是这些分析方法不如数字方法精确,随着这些数字算法的使用,我们在计算机图形学中也发明了更高质量的方法。这些算法的发明就是一个完美的例子。在我们继续之前,让我们看看这些算法背后的概念。虽然这似乎不在我们讨论的范围之内,但有必要指出两者的基本区别。如果你...

dda公司(dda)和bresenham算法(bresenham’s algorithm)的区别

数字差分算法(DDA)和Bresenhams算法是数字线绘制算法,在计算机图形学中用于绘制图形。以前,我们使用分析分析仪来计算像素,因此可以绘制线条。但是这些分析方法不如数字方法精确,随着这些数字算法的使用,我们在计算机图形学中也发明了更高质量的方法。这些算法的发明就是一个完美的例子。在我们继续之前,让我们看看这些算法背后的概念。虽然这似乎不在我们讨论的范围之内,但有必要指出两者的基本区别。如果你真的很熟悉这些算法,你可以跳转到本页末尾的实际差异。

什么是数字差分算法(dda)(digital differential algorithm (dda))?

DDA主要用于在计算机图形学中绘制线,在预测下一个像素值时使用实际值。假设初始像素值为(X0,Y0)(X0,Y0),目标像素为(X1,Y1)(X1,Y1)。我们将学习如何从已知像素值(X0,Y0)(X0,Y0)计算目标像素值,如下所示。

  • 如何使用DDA计算目标点值?

第一步:这里有输入(X0,Y0)(X0,Y0),我们应该确定直线是平行于x轴还是y轴。为了找到它,现在让我们计算初始和目标像素值之间的差异。

dx=X1–X0

dy=Y1–Y0

第二步:现在,我们已经确定了差异,如果‘dx’为零,我们应该沿着x轴画一条线,否则,我们应该画一条平行于y轴的线。这是用计算机语言进行的实际计算。

if(绝对(dx)>绝对(dy))

步长=绝对(dx);

其他的

阶跃=绝对(dy);

步骤3:现在,是时候确定实际的“x”坐标或“y”坐标像素值,以便绘制线。

X增量=dx/(浮点)步数;

Y增量=dy/(浮点)步数;

第四步:这必须计算,直到我们到达目标像素。DDA算法在执行计算时将像素值舍入到最接近的整数值。下面是我们现在讨论的代码示例。

对于(int v=0;v<步数;(v++)

{

x=x+x增量;

y=y+y增量;

像素(圆形(x),圆形(y));

}

我们已经用DDA画好了线,现在让我们继续去布雷森汉姆吧!

dda公司(dda)和bresenham算法(bresenham’s algorithm)的区别

什么是bresenham算法(bresenham’s algorithm)?

它也是一种数字线绘制算法,由Bresenham于1962年发明,因此它也有了相同的名称。该算法采用减法运算,精度更高;除了在绘制线时计算像素值之外。Bresenham算法在绘制曲线时的精度是可靠的;圆圈也是。让我们看看这个算法是如何工作的。

第一步:Bresenham算法假设初始像素坐标为(xa+1,ya)。

第二步:它自动计算下一个像素值为(xa+1,ya+1),这里‘a’是增量值,算法通过加上或减去它形成的方程来计算。

这种算法计算准确的值没有舍入,看起来也更容易!

  • Bresenham算法的数值例子:

现在让我们考虑点(0,0)和(-8,-4),并使用Bresenham算法在这些点之间画一条线。

给定数据,(x1,y1)=(0,0)和(x2,y2)=(-8,-4)。

现在让我们计算微分值如下。

∆x=x2-x1=-8-0=8

因此,x的增量值=∆x/x2=8/-8=-1。

∆y=y2-y1=-4-0=4

因此,y的增量值=∆y/y2=4/-4=-1。

决策变量=e=2*(∆年)-(∆十)

因此,e=2*(4)-(8)=8-8=0

通过上面的计算,让我们将结果值制成表格。y坐标的值是根据一个决策变量来调整的,这里我们忽略了它的计算。

像素 y                                              决策变量
(0,0) 0 0 0
(-1,0) -1 0 价值观
(-2,-1) -2 -1 0
(-3,-1) -3 -1 价值观
(-4,-2) -4 -2 0
(-5,-2) -5 -2 价值观
(-6,-3) -6 -3 0
(-7,-3) -7 -3 价值观
(-8,-4) -8 -4 0

dda和bresenham算法之间的差异:

  • 算术计算:

DDA在计算中使用实值,并使用浮点。下一个像素或点的值由微分方程确定

X增量=dx/(浮点)步数

Y增量=dy/(浮点)步数

这里不使用固定常数,但在Bresenham算法中,不动点用于算术计算。与DDA不同,Bresenham的算法使用整数算法。

  • 使用的操作类型:

DDA通过乘法和除法运算求解微分方程。你可以注意到同样的情况,X增量=dx/(float)步数。Bresenham的算法使用加法和减法运算,您可以在下一个像素值计算公式(xa+1,ya+1)中注意到这一点。与DDA相比,Bresenham的算法更简单。

  • 效率:

正如我们前面所讨论的,Bresenham的算法使用了比DDA更简单的算法,并且得到了有效的结果。

  • 速度:由于DDA使用浮点整数和乘除运算,因此速度相对较慢,而Bresenham的算法仅使用整数运算和加减运算。这大大减少了计算所需的时间,因此比DDA更快。
  • 精度:虽然DDA使用浮点值,但DDA的精度没有Bresenham的好。多种因素影响这一概念,因此,布列森厄姆的比DDA更准确。
  • 四舍五入:看看这里DDA的计算。

X增量=dx/(浮点)步数

您可能会注意到“float”,因此它不会舍入值,而Bresenham的算法将值舍入到最接近的整数。因此,在Bresenham算法中使用的值更简单。

  • 它画了什么?

DDA除了绘制直线外,还能绘制圆和曲线。Bresenham算法也能画出上述所有的图形,其精度比DDA算法要高。类似地,Bresenham算法可以得到比DDA算法更有效的曲线。两种算法都可以绘制三角形和多边形。

  • 哪个贵?

由于DDA也包含舍入,因此它比使用Bresenham算法要昂贵。

  • 哪一个是优化算法?

从我们上面的讨论可以很清楚地看出,Bresenham算法在速度、成本和操作使用方面都是优化的。

让我们以表格的形式看一下这些区别。

序号 差异 数字微分算法 Bresenham算法
1. 为什么叫这个名字? 仅仅因为它是方程的数字实现,它就有了这个名字。 它是由J.E.Bresenham在1962年发明的,因此得名。
2. 计算 它涉及到更复杂的计算。 使用的计算非常简单。
3. 使用的操作类型 它使用乘法和除法。这里使用的示例微分方程是Xincrement=dx/(float)步,Yincrement=dy/(float)步。  它使用加减法。这里的示例计算可以表示为(xa+1,ya+1)。
4. 算术计算值 它使用浮点值。 它只使用整数值。
5. 效率 复杂的运算会降低效率。 算法越简单,效率就越高。
6. 速度 乘法和除法运算的使用在计算过程中花费了大量的时间。 使用加法和减法运算所花费的时间比DDA少。
7. 准确度 准确度较低。 它更准确。
8. 舍入 它使用实际值,从不舍入值。 它将值舍入为最接近的整数值。
9 绘图能力 它能够绘制直线、圆和曲线,但精度较低。我们甚至可以用这个算法画三角形和多边形。 它能够以更高的效率绘制直线、圆和曲线。该算法还可以绘制三角形和多边形。
10 计算成本 这是昂贵的,因为它涉及四舍五入以及。 Bresenham算法的使用比DDA算法便宜。
11 优化算法 它不是一个优化算法 这是一个优化算法。

我们已经处理了DDA和Bresenham算法之间的所有可能的差异。它甚至似乎是重复的,但有一些正当的理由再次提到这些点,你会知道当你完全理解它。如果您仍然觉得存在歧义,请给我们留言。让我们通过分享适当的知识来共同学习!

  • 发表于 2021-06-25 00:12
  • 阅读 ( 615 )
  • 分类:IT

你可能感兴趣的文章

适应的(adaptive)和非自适应路由算法(non adaptive routing algorithms)的区别

...应路由算法 5. 摘要 什么是自适应路由算法(adaptive routing algorithms)? 动态路由或自适应路由使用自适应算法。这些算法根据拓扑结构和网络流量改变路由决策。相邻路由器或所有路由器提供路由信息。主要的优化参数是一些跳数...

  • 发布于 2020-10-18 20:02
  • 阅读 ( 593 )

算法(algorithm)和流程图(flowchart)的区别

...列比较-算法与表格形式的流程图 6. 摘要 什么是算法(an algorithm)? 每一个任务都是根据一个算法来完成的。如果Facebook有一个这样的问题,那么它将如何在一个日志中出现。首先,用户应该打开浏览器。然后他应该输入正确的网...

  • 发布于 2020-10-19 17:44
  • 阅读 ( 855 )

什么是伪码(what is the pseudocode)和算法?(algorithm?)的区别

简单来说,伪代码是一种描述算法逻辑的叙述。 伪代码不是可执行代码,因此不必使用精确的语法;但是,遵循业界广泛使用的标准是很有帮助的,解决方案团队可以很容易地理解该标准。 统一建模语言(UML)和其他业务...

  • 发布于 2021-06-24 23:47
  • 阅读 ( 1613 )

算法(algorithm)和伪码(pseudocode)的区别

...区别的比较 关键术语 算法,伪代码,编程 什么是算法(algorithm)? 算法是一个逐步解决问题的过程。过程是一个有限的指令序列,每个指令在有限的时间内执行。每一个问题都可以借助一个算法来解决。例如,当用户想要登录...

  • 发布于 2021-06-30 18:03
  • 阅读 ( 890 )

普里姆斯(prims)和krushal算法(krushal algorithm)的区别

...语 图,克鲁希尔算法,PRM算法,树 什么是prims算法(prims algorithm)? Prim的算法有助于从图中找到最小生成树。它确定包含图的每个顶点的边的子集。它还减少了边的权重之和。此外,该算法从根节点开始,在每一步检查所有相邻...

  • 发布于 2021-07-01 11:09
  • 阅读 ( 242 )

遗传算法(genetic algorithm)和传统算法(traditional algorithm)的区别

...、搜索、排序、分治、传统算法 什么是遗传算法(genetic algorithm)? 遗传算法是指基于遗传和自然选择的一类算法。这与物种适应环境变化并能够生存的过程相似。换句话说,它是建立在生物进化的基础上的。 此外,该算法不断...

  • 发布于 2021-07-01 15:41
  • 阅读 ( 239 )

反应速率示例问题

...学方程式的系数。 问题 观察到以下反应:2A+bB→ cC+DDA随着反应的进行,浓度以这些速率变化RateA=0.050 mol/L·srateB=0.150 mol/L·srateC=0.075 mol/L·srateD=0.025 mol/L·S系数b、c和d的值是什么? 解决方案 化学反应速率测量单位时间内...

  • 发布于 2021-10-14 16:18
  • 阅读 ( 131 )

流程图(flowchart)和算法(带图片)(algorithm (with pictures))的区别

...之前,他必须在几分钟内检查流程图。 什么是算法(an algorithm)? 算法是一个定义良好的逐步过程,用于处理数据(为特定问题提供解决方案)。Analogrithm准确地定义了程序执行操作所需的步骤。它包括输入、输出和逻辑...

  • 发布于 2021-11-27 16:25
  • 阅读 ( 318 )

什么是密码算法?(cryptographic algorithms?)

密码算法是一系列过程或规则,用于在密码系统中对消息进行加密和解密。简单地说,它们是通过确保不需要的人不能访问数据来保护数据的过程。这些算法有着广泛的用...

  • 发布于 2021-12-07 12:03
  • 阅读 ( 166 )

什么是算法?(an algorithm?)

在其最普遍的意义上,算法是从已知开始产生可预测的结束状态的任何一组详细指令。然而,算法只与给出的指令一样好,如果没有正确定义算法,结果将是不正确的。 ...

  • 发布于 2021-12-11 09:51
  • 阅读 ( 105 )