C語言用Bresenham演算法畫圓,哪位高手教教,主要是演算法裡的內容,謝謝

2021-08-07 23:11:14 字數 2480 閱讀 9444

1樓:雲上他

的確哈,關鍵在於對delta的理解

可以看到,都是delta=2*(1-radius)這樣的,起作用應該是判斷要畫的點x、y座標的變化趨勢,先把我註釋了的**貼下,加了getch();可以看到畫的過程

#include

#include

void bresenhemcircle(int centerx, int centery, int radius, int color, int type);

void main()

void bresenhemcircle(int centerx, int centery, int radius, int color, int type)

else/*不執行*/

/*以下**設定下次四點的位置,圓是對稱的,且此方法相當於同時畫四個圓弧

觀察右上方圓弧可知,前一半是x增的要快些,後一半是y減的快些*/

if (delta < 0)

else if(delta > 0)

else

direction=2;

switch(direction)}}

2樓:匿名使用者

#include

#include /*預定義庫函式*/

void circlepoint(int x,int y) /*八分法畫圓程式*/

void midbresenhamcircle(int r) /* 中點bresenham演算法畫圓的程式 */

x++;

delay(900000);

} /* while */

}main()

{int i,j,r,graphmode,graphdriver;

printf("中點bresenhamcircle演算法畫圓的程式"); /*提示資訊*/

printf("注意 |r|<=11");

printf("輸入半徑值 r:");

scanf("%d",&r);

printf("按任意鍵顯示圖形...");

getch();

cleardevice();

setbkcolor(black);

for(i=20;i<=620;i+=20) /*使用雙迴圈畫點函式畫出**中的縱座標*/

for(j=20;j<=460;j++)

putpixel(i,j,2);

for(j=20;j<=460;j+=20) /*使用雙迴圈畫點函式畫出**中的橫座標*/

for(i=20;i<=620;i++)

putpixel(i,j,2);

outtextxy(320,245,"0"); /*原點座標*/

outtextxy(320-5*20,245,"-5");circle(320-5*20,240,2); /*橫座標值*/

outtextxy(320+5*20,245,"5");circle(320+5*20,240,2);

outtextxy(320-10*20,245,"-10");circle(320-10*20,240,2);

outtextxy(320+10*20,245,"10");circle(320+10*20,240,2);

outtextxy(320-15*20,245,"-15");circle(320-15*20,240,2);

outtextxy(320+15*20,245,"15");circle(320+15*20,240,2);

outtextxy(320,240-5*20,"-5");circle(320,240-5*20,2); /*縱座標值*/

outtextxy(320,240+5*20,"5");circle(320,240+5*20,2);

outtextxy(320,240-10*20,"-10");circle(320,240-10*20,2);

outtextxy(320,240+10*20,"10");circle(320,240+10*20,2);

outtextxy(20,10,"the center of the circle is (0,0) "); /*座標軸左上角顯示提示資訊*/

setcolor(red); /*標記座標軸*/

line(20,240,620,240); outtextxy(320+15*20,230,"x");

line(320,20,320,460); outtextxy(330,20,"y");

setcolor(yellow)

請問中點bresenham演算法畫圓與bresenham演算法畫圓有區別嗎?

c語言的演算法作用及表示方法,C語言的演算法作用及表示方法

c語言的演算法copy主要就是把人類bai如何解決問題的方法和思路用某 du種形式表zhi示出來。表示dao方法有幾種,比如自然語言表示 流程圖表示 n s流程圖表示 偽 表示。各有各好處,一般常用的是流程圖和n s流程圖兩種表示方法 他的表達方式是 語句 函式。演算法的作用是用來解決一些問題。好的...

程式設計演算法問題 10,c語言演算法問題

典型的動態規劃揹包問題。2 動態規劃。你找一下揹包問題,到處都有詳細解答 跟這個問題類似 只要稍微改一下題目和 就行。改了之後思路如下 幫你換成c語言了 給分啊 有一個箱子容量為v 正整數,o v 20000 同時有n個物品 o n 30 每個物品有一個體積 正整數 要求從 n 個物品中,任取若千個...

求數字分組演算法,請使用C或C 語言

我的想法比較簡單。你可以將這個演算法寫成遞迴形式,第一層做組合挑選,共2 n種,第二層2 n 1種.這樣可以挑選所有的組合情況,最後再比較,挑選。程式比較容易實現,但是我擔心效率。如果需要進行智慧處理,最好的方式是在遞迴過程中新增判斷和 這樣會提高效率,儘快搜尋到好的結論。n的範圍有多大啊?n 10...