2.中点画线法
2017-08-06 本文已影响4人
clihen
中点画线法采用直线的一般式来描绘直线。
这条直线将平面区域的点分为三个部分,直线上方的点,直线下方的点以及直线上的点
对于直线上方的点,F(x,y) >0;
直线下方的点, F(x,y) <0;
直线上的点 ,F(x,y) = 0.
中点画线法思想:每次在最大位移方向上走一步,而另一个方向是走步还是不走步需要取决中点误差项的判断。
假定: 0<= | k | <= 1,每次在x轴方向上加1,y方向上加1还是不变需要判断。
理想直线,当前点绘制为P(xi , yi),则下一点要么是Pu,要么是Pd,假设直线与 x = xi +1 这条直线相交于Q点,
则 当Q点在M点上方时,Q点离Pu更近,下一点取Pu
当Q点在M点下方时,Q点离Pd点更近,下一点取Pd
当Q = M时,则取Pu 或者 Pd都可以。。
如何判断M点在Q的上方还是下方??
因此将M点代入直线方程,
所求结果若是小于0,M在Q即直线的下方,取Pu,
若是大于0,M在Q上方,取Pd ,
等于0,取Pu或者Pd都可以。
当d<0,取Pu时,下一个中点M1的情况:
当 d >= 0时,取Pd,下一个中点M1的情况:
又因为d只关心符号,所以可以用2d来代替d来拜托浮点运算。写出仅包含整数运算的算法。