Tag Archives: GUI

直线扫描算法为何以斜率1为分水岭

在DDA直线扫描算法中,书中写道:

“若斜率小于1,则以单位x间隔进行取样(deltaX=1),并逐个计算y值;若斜率大于1,则以单位y间隔进行取样,逐个计算x的值。”

我一开始并不了解为什么要区分斜率的情况,在做过一个实验后,我终于知道了答案。

在这个实验中,我取斜率为2.0的情况,分别以x间隔和y间隔进行取样,得到以下结果:

(1)以单位x间隔采样

(2)以单位y间隔采样

可见,对于斜率大于1的情况,如果仍使用单位x进行采样,就会导致直线的不连续!

原因也非常简单,当斜率小于1时,x每增加1,y的增加小于1;而斜率大于1时,x每增加1,y的增加大于1,这就会导致跳跃。

我想保证直线连续性、提高采样密度是以1为分水岭的原因,不过在下这个结论之前我还需要查阅更多相关资料。