我正在研究一本解释DDA算法的书并且陷入了困境。根据规则,这些点应该被四舍五入所以在这种情况下它应该是(4,5)在(4,5)的位置不是吗。检查下面的图片我已经包围了我在书中感觉不正确的要点,所以我是错误的还是这本书在这里弄错了?
答案 0 :(得分:1)
为了在谨慎的平面(x,y),x,y整数上绘制连续线,该算法基于线的斜率,使 x 或 y “载体”(总是递增1),另一个坐标被内插。原因是:
x+0.1
,x+0.2
等等。)该文档似乎是this PDF,您可以在其中看到连续线并不总是在它穿过的像素的中心。由于该算法,点将具有直接邻居,可以是x+1
或y+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
)这样:
在这种特殊情况下,(4, 38/7)
〜= (4, 5.43)
,5.43
四舍五入到最接近的整数,即5
而不是6
。