天天看點

圖形學_橢圓掃描轉換_中點橢圓算法

中點橢圓算法

(1)先讨論橢圓弧的上部分

   設(xp,yp)已确定,則下一待選像素的中點是(xp+1,yp-0.5)

      d1=f(xp+1,yp-0.5)= b2(xp+1)2+a2(yp-0.5)2-a2b2

   根據d1的符号來決定下一像素是取正右方的那個,還是右上方的那個。     

        若d1<0,中點在橢圓内,取正右方象素,判别式更新為:

d1‘=f(xp+2,yp-0.5)=d1+b2(2xp+3)

d1的增量為b2(2xp+3)

        當d1≥0,中點在橢圓外,取右下方象素,更新判别式:

    d1‘=f(xp+2,yp-1.5)=d1+b2(2xp+3)+a2(-2yp+2)

    d1的增量為b2(2xp+3)+a2(-2yp+2)

(2)d1的初始條件:橢圓弧起點為(0,b);

     第一個中點為(1,b-0.5) 

     初始判别式:d1=f(1,b-0.5)=b*b+a*a(-b+0.25)

(3)轉入下一部分,下一象素可能是正下方或右下方,   

     此時判别式要初始化

    d2 = f(xp+0.5,yp-1) = b2(xp+0.5)2+a2(yp-1)2-a2b2 

     若d2<0,取右下方像素,則d2‘ = f(xp+1.5,yp-2) = d2 + b2(2xp+2)+a2(-2yp+3)

     若d2>=0,取正下方像素,則d2‘ = f(xp+0.5,yp-2) = d2 + a2(-2yp+3)

下半部分弧的終止條件為 y = 0