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

時間 2021-08-11 17:32:28

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語言如何判斷素數?

就是判斷從2開始到乙個數的平方根中若不能被他整除,那麼該數就是素數 網上 是若能整除則跳出,所有條件不能整除則輸出是素數。他是只需要一種判斷,不滿足則跳出,那麼跳出後i n,所以可以用。你的 思路沒有錯,只不過網上沒有使用的優化的演算法,如果你想弄明白怎麼優化,那你需要在數學中找答案 獅子 網上的 ...

C語言演算法的問題

演算法一 用的是等差數列的求和公式,現在簡單推導一下 s 1 2 3 ns n n 1 n 2 1相加得 2 s n 1 n 1 n 1 n 1 得 s n 1 n 2 演算法二和演算法三 都差不多,c語言實現如下 void sum int n 2和3不是一樣的麼。感覺是在忽悠。演算法三 第1步 將...

C語言中的乘方演算法,C語言乘方運算

魔法師00可可 樓主可以按照這個思路做 用遞迴實現 int function int a a指數的次方 飛貓貓貓貓 int fang int a,int b a是底數,b是指數即a b 這是簡單的寫法,如果底數和指數太大還需要大整數乘法的演算法。return x 栩箭 a b,把b分成整數部分跟不大...