Bresenham的线条绘制算法存在问题

时间:2016-01-08 22:04:22

标签: java algorithm graphics

我尝试使用Bresenham's Line Drawing Algorithm在20x20网格上绘制一条线。

基本上,当变量deltaerror(来自wiki)大于1时(当y的变化大于x的变化时),y值几乎变为应该的两倍。希望我能在代码的评论中更好地解释它。我也认为我找到了错误的来源,我也会在评论中解释。

这是我制作的代码,主要是从wiki中的伪代码复制而来。

query.gsub!(' ', '+')

感谢您的帮助!

编辑:当d_error大于1时,切换x和y值。当斜率高于1且低于-1时,该行消失。

1 个答案:

答案 0 :(得分:1)

引用快速谷歌结果:

http://www.math.ubc.ca/~cass/courses/m308-02b/projects/puhalovic/#alldirections

"当斜率大于1或小于-1时,我们必须采用先前的实现并将所有x和y值交换为"移动"计算回到" First Octant"。"

IOW:bresenham的教科书实施仅适用于(用你的术语)d_error<=1的行。您必须实施上述链接中提到的交换。