DDA算法混乱......!

时间:2013-06-09 09:28:16

标签: algorithm dda

我正在研究一本解释DDA算法的书并且陷入了困境。根据规则,这些点应该被四舍五入所以在这种情况下它应该是(4,5)在(4,5)的位置不是吗。检查下面的图片我已经包围了我在书中感觉不正确的要点,所以我是错误的还是这本书在这里弄错了? enter image description here

1 个答案:

答案 0 :(得分:1)

为了在谨慎的平面(x,y),x,y整数上绘制连续线,该算法基于线的斜率,使 x y “载体”(总是递增1),另一个坐标被内插。原因是:

  • 图纸应尽可能接近线方程
  • 绘制线上不应有“洞”
  • 无需计算超出必要的值(例如, x “carrier”,x+0.1x+0.2等等。)

该文档似乎是this PDF,您可以在其中看到连续线并不总是在它穿过的像素的中心。由于该算法,点将具有直接邻居,可以是x+1y+1,具体取决于斜率(插值坐标可以是一行中两次(或更多)相同的舍入值。例如,如果插入 y ,你可以有(10,20),(11,20),(12,21)两次y = 20)。

仅考虑四分之一[0,90]度,该线从坐标(0,0)开始。如果线斜率低于45度,最好将 x 作为“载波”(递增1),并插入 y 。实施例

      +++
   +++
+++

此处 x 总是加1,但 y 有时与前一个 x 的值相同(例如,对于x = 0,x = 1,x = 2我们有相同的 y

返回四舍五入

在同一份文件中,据说第47页

  

为了在屏幕上绘制像素,我们需要将坐标四舍五入到最接近的整数

通常是进行插值时的情况。最好采用最接近的整数。这通常意味着

  • 如果第一个小数为>= .5,则取整数部分+1(例如4.71 => 5
  • 如果第一个小数为< .5(例如5.42 => 5
  • ,则仅取整数部分

这样:

  • 整数像素坐标更接近带小数的方程式值
  • 舍入值的总和(例如 x )更可能接近等式中计算值的总和。

在这种特殊情况下,(4, 38/7)〜= (4, 5.43)5.43四舍五入到最接近的整数,即5而不是6