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...