1. 圓有哪些公式和計算方法
圓的周長和面積公式。很多上小學的孩子都會開始學習圓的周長面積的演算法,孩子難免會遇見不懂的題目,父母應該提前知道公式,方便教育孩子。
圓的周長和面積公式:
1、圓周長就是:C=πd或者C=2πr(其中 d是圓的直徑, r是圓的半徑)。
2、圓面積公式:S=πr或S=π×(d/2)。(π表示圓周率(3.1415927……),r表示半徑,d表示直徑)。
(1)拋光圓圈演算法擴展閱讀:
1、圓周長是指在圓中內接一個正n邊形,邊長設為an,正邊形的周長為n×an,當n不斷增大的時候,正邊形的周長不斷接近圓的周長C的數學現象,即:n趨近於無窮,C=n×an。
2、圓周率:數學家劉徽用的是「割圓術」的'方法,也就是用圓的內接正多邊形和外切正多邊形的周長逼近圓周長,求得圓接近192邊型,求得圓周率大約是3.14。
3、扇形面積:
在半徑為R的圓中,因為360°的圓心角所對的扇形的面積就是圓面積S=πR2;;,所以圓心角為n°的扇形面積:
S=(nπR2)÷360
扇形還有另一個面積公式
S=1/2lR (其中l為弧長,R為半徑 )
本來S=(nπR2)÷360
按弧度制。2π=360度。因為n的單位為度.所以l為角度為n時所對應的弧長.即.l=θR=(n/180)π×R
∴s=(n/180)π*R*π*R/2π=1/2lR.
2. C語言用Bresenham演算法畫圓,哪位高手教教,主要是演算法里的內容,謝謝!
的確哈,關鍵在於對delta的理解
可以看到,都是delta=2*(1-radius)這樣的,起作用應該是判斷要畫的點x、y坐標的變化趨勢,先把我注釋了的代碼貼下,加了getch();可以看到畫的過程
-----------------------------------------------------------------
#include<graphics.h>
#include<stdio.h>
void BresenhemCircle(int centerx, int centery, int radius, int color, int type);
void main()
{
int drive=DETECT,mode;
int i,j;
initgraph(&drive,&mode,"");
BresenhemCircle(300,200,100,15,0);
getch();
}
void BresenhemCircle(int centerx, int centery, int radius, int color, int type)
{
int x =type = 0;/*初始橫坐標為原點*/
int y = radius; /*初始縱坐標遠離原點*/
int delta = 2*(1-radius);
int direction;
while (y >= 0)
{
getch();
if (!type)/*執行*/
{
/*在上半圓畫兩點*/
putpixel(centerx+x, centery+y, color);
putpixel(centerx-x, centery+y, color);
/*在下半圓畫兩點*/
putpixel(centerx-x, centery-y, color);
putpixel(centerx+x, centery-y, color);
getch();
}
else/*不執行*/
{
line(centerx+x, centery+y, centerx+x, centery-y);
line(centerx-x, centery+y, centerx-x, centery-y);
getch();
}
/*以下代碼設置下次四點的位置,圓是對稱的,且此方法相當於同時畫四個圓弧
觀察右上方圓弧可知,前一半是x增的要快些,後一半是y減的快些*/
if (delta < 0)
{
if ((2*(delta+y)-1) < 0)
direction = 1; /*選擇橫向加*/
else
direction = 2;
}
else if(delta > 0)
{
if ((2*(delta-x)-1) > 0)
direction = 3; /*選擇縱向減*/
else
direction = 2;
}
else
direction=2;
switch(direction)
{
case 1:
x++;/*只橫坐標遠離原點*/
delta += (2*x+1); /*小執行到這,所以加*/
break;
case 2:
x++;
y--;/*橫向遠離,同時縱向靠近*/
delta += 2*(x-y+1); /*即(2*x+1)+(-2*y+1)*/
break;
case 3:
y--;/*只縱坐標靠近原點*/
delta += (-2*y+1); /*大執行到這,所以減*/
break;
}
}
}