算法画圆 中点圆算法 计算机图形学

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

绠楁硶鐢诲渾涓偣鍦嗙畻娉?璁$畻

鏈哄浘褰㈠

Bresenham绠楁硶鐢诲渾涓偣鍦嗙畻娉曡绠楁満鍥惧舰瀛?010-12-02 20锛?8

///////////////////////////////////////////////////////////////// ///

//涓偣鍦嗘暣鏁扮畻娉曠敾鍦?/

///////////////////////////////////////////////////////////////// ////

void roundMid(int x1,int y1,int R,CDC*pDC)

{

int x=0,y=R锛?/p>

int d=1-R锛?/璧风偣(0,R),涓嬩竴鐐逛腑鐐?1,R-0.5),d=1*1+(R-

0.5)*(R-0.5)-R*R=1.25-R,d鍙弬涓庢暣鏁拌繍绠楋紝鎵€浠ュ皬鏁伴儴鍒嗗彲鐪佺暐

while(y x)//y x鍗崇涓€璞¢檺鐨勭2鍖哄叓鍒嗗渾

{

pDC-SetPixel(x+x1,y+y1,RGB(255,0,0))锛?/鍦嗗績(x1,y1),鐢荤偣鏃剁洿鎺ョ浉鍔犲钩绉?鐢?鍖?/p>

pDC-SetPixel(y+x1,x+y1,RGB(255,0,0))锛?/鐢?鍖?/p>

pDC-SetPixel(-x+x1,y+y1,RGB(255,0,0))锛?/鐢?鍖?/p>

pDC-SetPixel(-y+x1,x+y1,RGB(255,0,0))锛?/鐢?鍖?/p>

pDC-SetPixel(-x+x1,-y+y1,RGB(255,0,0))锛?/鐢?鍖?/p>

pDC-SetPixel(-y+x1,-x+y1,RGB(255,0,0))锛?/鐢?鍖?/p>

pDC-SetPixel(x+x1,-y+y1,RGB(255,0,0))锛?/鐢?鍖?/p>

pDC-SetPixel(y+x1,-x+y1,RGB(255,0,0))锛?/鐢?鍖?/p>

if(d 0)

d=d+2*x+3锛?/d鐨勫彉鍖?/p>

else

{

d=d+2*(x-y)+5锛?/d=0鏃?d鐨勫彉鍖?/p>

y--锛?/y鍧愭爣鍑?

}

x++锛?/x鍧愭爣鍔?

}

}

///////////////////////////////////////////////////////////////// ///

//Bresenham绠楁硶鐢诲渾//

///////////////////////////////////////////////////////////////// ////

void RoundBre(int x1,int y1,int R,CDC*pDC)

{

//鍦嗗績(x1,y1),褰撳墠鍍忕礌I(xi,yi),鍙冲儚绱燞(xi+1,y),鍙充笅鍍忕礌D(xi+1,yi-1),涓嬪儚绱燰(xi,yi-1)

int xi,yi,dd,m,n锛?/p>

//鍦嗗績璺濆樊鍊煎钩鏂筪h=(xi+1)*(xi+1)+yi*yi-R*R锛沝

d=(xi+1)*(xi+1)+(yi-1)*(yi-1)-R*R锛沝v=xi*xi+(yi-1)*(yi-1)-R*R

锛?/p>

xi=0锛?/璧风偣(0,R)

yi=R锛?/p>

dd=2-2*R锛?/璧风偣鐨勫彸涓嬪儚绱?1,R-1)鐨勫渾蹇冭窛宸€糳

d=1+(R-1)*(R-1)-R*R pDC-SetPixel(x1,y1,RGB(0,0,255))锛?/鐢诲渾蹇?璇佹槑鍦嗗績蹇呴』鍗犵敤涓€涓儚绱?/p>

while(yi=xi)//寰幆鍒板叓鍒嗕箣涓€鍦嗭紱yi=0鍗冲彲浠ョ敾鍑哄洓鍒嗗渾

{

pDC-SetPixel(xi+x1,yi+y1,RGB(255,0,0))锛?/2鍖?鍧愭爣骞崇Щ

(x1,y1)鐢诲渾

pDC-SetPixel(yi+x1,xi+y1,RGB(255,0,0))锛?/1鍖?/p>

pDC-SetPixel(-xi+x1,yi+y1,RGB(255,0,0))锛?/3鍖?/p>

pDC-SetPixel(-yi+x1,xi+y1,RGB(255,0,0))锛?/4鍖?/p>

pDC-SetPixel(-yi+x1,-xi+y1,RGB(255,0,0))锛?/5鍖?/p>

pDC-SetPixel(-xi+x1,-yi+y1,RGB(255,0,0))锛?/6鍖?/p>

pDC-SetPixel(xi+x1,-yi+y1,RGB(255,0,0))锛?/7鍖?/p>

pDC-SetPixel(yi+x1,-xi+y1,RGB(255,0,0))锛?/8鍖?/p>

if(dd 0)//D鍦ㄥ渾鍐咃紱H鍦ㄥ渾涓婃垨鍦嗗锛涢€夋嫨H鎴

朌,dh=0,dd 0,m=|dh|-|dd|=2*(dd+yi)-1锛?/p>

{

m=2*(dd+yi)-1锛?/p>

if(m=0)//鍙栧彸鍍忕礌H(xi+1,yi)锛沵=0鏃跺彇鍙崇偣

{

dd=dd+2*xi+3锛?/姹侶鐨勫彸涓嬪儚绱?xi+2,yi-

1),dd=(xi+2)*(xi+2)+(yi-1)*(yi-1)-R*R xi=xi+1锛?/p>

}

else//鍙栧彸涓嬪儚绱燚(xi+1,yi-1)

{

dd=dd+2*(xi-yi+3)锛?/姹侱鐨勫彸涓嬪儚绱?xi+2,yi-

2),dd=(xi+2)*(xi+2)+(yi-2)*(yi-2)-R*R xi=xi+1锛?/p>

yi=yi-1锛?/p>

}

}

else if(dd 0)//D鍦ㄥ渾澶栵紱V鍦ㄥ渾澶栨垨鍦嗕笂锛涢€夋嫨D鎴朧锛沝d 0,dv=0,n=|dd|-|dv|=2*(dd-xi)-1锛?/p>

相关文档
最新文档