首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DDA算法混乱.!

DDA算法混乱.!
EN

Stack Overflow用户
提问于 2013-06-09 09:28:16
回答 1查看 2.3K关注 0票数 1

我当时正在研究一本解释DDA算法的书,被困在一个点( .According )上,所以这里的点应该是(4,6)在(4,5)的位置,是不是我把书中我觉得不正确的点圈在下面的图片上,所以我把它看错了,还是书在这里印错了?

EN

回答 1

Stack Overflow用户

发布于 2013-06-09 10:21:13

为了在离散平面(x,y),x,y整数上画一条连续线,该算法基于直线的斜率,使x或y成为“载体”(总是增加一个),而另一个坐标则被插值。原因是:

  • 绘图应尽可能接近直线方程。
  • 画的线上不应该有“洞”。
  • 不需要计算超出需要的数值(例如,有x“载体”、x+0.1x+0.2等)

文档似乎是此PDF,在这里您可以看到连续的线,并不总是在它所穿过的像素的中心。由于该算法,一个点将有一个近邻,无论是在x+1还是y+1,取决于斜率(插值的坐标可能在一行中是相同的四舍五入的两倍(或更多)。例如,如果y是插值的,你可以有(10,20),(11,20),(12,21)有两次y=20)。

仅考虑四分之一0,90度,这条线从坐标(0,0)开始。如果直线斜率低于45度,则最好将x作为“载体”(增量为1),y为插值。示例

代码语言:javascript
复制
      +++
   +++
+++

在这里,x总是以1递增,但y有时取的值与以前的x相同(例如,对于x=0,x=1,x=2,我们有相同的y)

回到四舍五入

在同一份文件中,它是第47页。

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

这通常是在做插值时的情况。最好取最近的整数。这意味着,通常

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

因此:

  • 整数像素坐标更接近用小数表示的方程值。
  • 四舍五入值(如x)的和更有可能接近该方程的计算值之和。

在这种情况下,(4, 38/7) ~= (4, 5.43)5.43被舍入到最近的整数,即5而不是6

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17008245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档