¼ÆËã»úͼÐÎѧ-Éè¼ÆËã·¨»æÖÆÖ±ÏßÓëÔ² ÏÂÔØ±¾ÎÄ

ͼ2.5.4 Bresenham»­ÏßËã·¨µ±1>k>0ʱÔËÐнá¹û½ØÍ¼

ͼ2.5.5 Bresenham»­ÏßËã·¨µ±k<-1ʱÔËÐнá¹û½ØÍ¼

ͼ2.5.6 Bresenham»­ÏßËã·¨µ±k<-1ʱÔËÐнá¹û½ØÍ¼

- 20 -

ͼ2.5.7 Bresenham»­ÏßËã·¨µ±-1

ͼ2.5.8 Bresenham»­ÏßËã·¨µ±-1

Bresenham»­Ô²:

ͼ2.5.9 Bresenham»­Ô²Ëã·¨ÔËÐнá¹û½ØÍ¼

- 21 -

ͼ2.5.10 Bresenham»­Ô²Ëã·¨ÔËÐнá¹û½ØÍ¼

?ʵÑéÌâÈý

3.1ʵÑéÌâÄ¿

×ÔѧÍÖÔ²µÄBresenhamÉú³ÉËã·¨£¬ÀûÓöԳÆÐÔ½«¸ÃËã·¨³ÌÐòÍÆ¹ãµ½ÈÎÒ»ËÄ·ÖÔ²£¬´Ó¶øÐγÉÒ»°ãµÄBresenham»­ÍÖÔ²Ëã·¨¡£²¢ÉÏ»ú±à³Ì»­³öÒ»¸öÔ²ÐÄÔÚµã(xc, yc)£»ÑØxÖá·½ÏòµÄ³¤°ëÖ᳤¶ÈΪa, ÑØyÖá·½ÏòµÄ¶Ì°ëÖ᳤¶ÈΪb£» Ô²ÖÜÑÕɫΪcolorµÄÍÖÔ²¡£ÒªÇó£º(1)ÍÖÔ²ÐĵÄ×ø±ê¡¢³¤°ëÖ᳤¶ÈΪa¡¢¶Ì°ëÖ᳤¶ÈΪbºÍÔ²ÖÜÑÕÉ«color¶¼ÒªÇó¿ÉÒÔËæ»úÊäÈ룻(2)ÒªÇóÀûÓÃÎı¾Êä³öº¯ÊýÏÔʾ³öËù»­ÍÖÔ²µÄÔ²ÐÄ¡£

3.2ʵÑéÄ¿µÄºÍÒâÒå

1. ×ÔѧÍÖÔ²µÄBresenhamÉú³ÉËã·¨

2. ÀûÓöԳÆÐÔ½«¸ÃËã·¨³ÌÐòÍÆ¹ãµ½ÈÎÒ»ËÄ·ÖÔ²£¬±àдһ°ãµÄBresenham»­ÍÖÔ²Ëã·¨ 3.ÊìϤ²¢ÕÆÎÕÍÖÔ²»¡µÄ»­·¨£¬²¢ÍØÕ¹µ½Õû¸ö8·ÖÍÖÔ²¡£

3.3³ÌÐòÖÆ×÷²½Öè(°üÀ¨Ë㷨˼Ïë¡¢Ëã·¨Á÷³ÌͼµÈ)

1. ÊäÈëÍÖÔ²µÄ³¤°ëÖáaºÍ¶Ì°ëÖáb¡£

2. ¼ÆËã³õʼֵd?b2?a2?(-b?0.25)£¬x?0,y?b¡£ 3. »æÖƵã(x,y)¼°ÆäÔÚËÄ·ÖÏóÏÞÉϵÄÁíÍâ3¸ö¶Ô³Æµã¡£

4. ÅжÏdµÄ·ûºÅ¡£Èôd?0£¬ÔòÏȽ«d¸üÐÂΪd?b2?(2x?3)£¬ÔÙ½« (x,y)¸üÐÂΪ

(x?1,y)£»·ñÔòÏȽ«d¸üÐÂΪd?b2?(2x?3)?a2?(?2y?2)£¬ÔÙ½«(x,y)¸üÐÂΪ

- 22 -

(x?1,y-1)¡£

5. µ±b2?(x?1)?a2?(y?0.5)ʱ£¬Öظ´²½Öè(3)ºÍ(4)£¬·ñÔòתµ½²½Öè(6)¡£ 6. ÓÃÉϰ벿·Ö¼ÆËãµÄ×îºóµã(x,y)À´¼ÆËãϰ벿·ÖÖÐdµÄ³õÖµ:

d?b2?(x?0.5)2?a2?(y?1)2?a2?b2

7. »æÖƵã(x,y)¼°ÆäÔÚËÄ·ÖÏóÏÞÉϵÄÁíÍâ3¸ö¶Ô³Æµã¡£

8. ÅжÏdµÄ·ûºÅ¡£Èôd?0£¬ÔòÏȽ«d¸üÐÂΪd?b2?(2xi?2)?a2?(?2yi?3), ÔÙ½«

(x,y)¸üÐÂΪ(x?1,y-1)£»·ñÔòÏȽ«d¸üÐÂΪd?a2?(?2yi?3)£¬ÔÙ½«(x,y)¸üÐÂΪ

(x,y-1)¡£

9. µ±y?0£¬ ÖØ¸´²½Öè(7)ºÍ(8)£¬·ñÔò½áÊø¡£

3.4Ö÷³ÌÐò

#include \#include \#include \

void Bresenham_Ciecle(int a,int b,int p,int q,int c) {

putpixel(p,q,c);

int x=0; int y=b;

double dt=b*b+a*a*(-b+0.25); putpixel(x+p,y+q,c);

while( b*b*(x+1) < a*a*(y-0.5)) {

if(dt<0) { }

- 23 -

dt+=b*b*(2*x+3);