我主要按照Xiaoolin Wu 的算法 来实现 Wu 的算法,但遇到了一些障碍。具体来说,这部分算法包含在 wiki 条目底部的注释中:
If at the beginning of the routine abs(dx) < abs(dy) is true, then all plotting should be done with x and y reversed.
我认为这意味着只需用plot(y, x)反转对plot(x, y)的所有调用,但这样做会导致一些非常特殊的线条(我似乎无法获得屏幕截图,因为每次我尝试一下,我的 OpenGL 窗口将空白粘贴到 Paint 中)。
之前实施过此操作的人可以给我一些指导吗?我的线条现在看起来有点傻,每个象限只填充了一半。
您不仅应该将
plot(x,y)
与 plot(y,x)
交换,还应该交换输入参数 x1<->y1
和 x2<->y2
。如果您同时执行这两项操作,它将正常工作。后一部分是在文章的代码中完成的,但不是绘图坐标的切换。
背后的原因是您在
x
范围内逐像素步进。如果您的水平范围小于垂直范围,则可能会产生间隙(例如,一条完全垂直的线将导致它仅具有单个 x 值)。
因此,您可以切换输入参数
x
和 y
,但同时切换输出坐标系(通过在绘图函数中交换 x
和 y
)。