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分成整數部分跟不大...