當前位置:首頁 » 操作系統 » 橢圓演算法

橢圓演算法

發布時間: 2022-01-09 20:08:07

⑴ 橢圓的標准方程的計算方法

((其中分別是橢圓的長半軸、短半軸的長,可由圓的面積可推導出來)或(其中分別是橢圓的長軸,短軸的長)。
圓和橢圓之間的關系:
橢圓包括圓,圓是特殊的橢圓。

⑵ 畫橢圓的演算法

#include<stdio.h>
#include<graphics.h>
#include<math.h>
#include<time.h>
#include<conio.h>
void ellipsepoint(int x,int y,int value,int rx,int ry)
{
putpixel((int)rx+x,(int)ry+y,value);
putpixel((int)rx-x,(int)ry+y,value);
putpixel((int)rx+x,(int)ry-y,value);
putpixel((int)rx-x,(int)ry-y,value);
}
void MidPointEllipse(int a,int b,int value,int rx,int ry)
{
long x=0;
long y=b;
long sa=a*a,sb=b*b;
long xp=(long)((float)sa/(float)sqrt((float)(sa+sb)));
long yp=(long)((float)sb/(float)sqrt((float)(sa+sb)));
long d=sb-sa*(b-0.25);
ellipsepoint(x,y,value,0,0);
while(x<xp)
{
if(d<0)
{ d+=sb*(2*x+3);
x++; }
else
{
d+=sb*(2*x+3)+sa*(-2*y+2);
x++;
y--;
}
ellipsepoint(x,y,value,rx,ry);
}
x=a;y=0;d=4*sa+sb-4*a*sb;
while(y<yp)
{
if(d<0)
{
d+=sa*(2*y+3);
y++;
}
else
{
d+=sa*(2*y+3)+sb*(2-2*x);
y++;
x--;
}
ellipsepoint(x,y,value,rx,ry);
}
}
int main()
{
int gdriver,gmode;
gdriver=VGA;
gmode=VGAHI;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver,&gmode,"");
MidPointEllipse(50,30,5,100,100);
getch();
closegraph();
return 0;
}

java 橢圓演算法

以下代碼,將輸出一個橢圓,再有問題,我可遠程助你。如下:

/**
*(300,100)(400,100)
*
*/
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
publicclassLipse
{
publicstaticvoidmain(String[]args)
{
newMainFrame();
}
}

{
JPanelpane=newJPanel();
JTextFieldT_a,T_b;
JButtonDraw,Show;
JLabelL_a,L_b;
inta,b;
MainFrame()
{
super("DrawLipseWindow");
Containercon=this.getContentPane();
con.setLayout(null);

pane.setBounds(20,20,850,550);
pane.setBackground(newColor(100,156,200));
con.add(pane);

L_a=newJLabel("請輸入長半徑:a");
L_a.setBounds(180,580,100,20);
con.add(L_a);

L_b=newJLabel("請輸入短半徑:b");
L_b.setBounds(180,630,100,20);
con.add(L_b);


T_a=newJTextField();
T_a.setBounds(300,580,50,20);
con.add(T_a);

T_b=newJTextField();
T_b.setBounds(300,630,50,20);
con.add(T_b);

Draw=newJButton("畫橢圓");
Draw.setBounds(550,580,90,30);
Draw.addActionListener(this);
con.add(Draw);

Show=newJButton("顯示坐標");
Show.setBounds(550,620,90,30);
Show.addActionListener(this);
con.add(Show);

this.addWindowListener(newCloseWindow());
this.setBounds(20,20,900,700);
this.setVisible(true);
this.setResizable(false);

}/*MainFrame()*/
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()==Draw)
{
a=Integer.parseInt(T_a.getText().trim());
b=Integer.parseInt(T_b.getText().trim());
Lineline=newLine(this);
line.drawLipse(a,b);
}
if(e.getSource()==Show)
{
Graphicsg1=this.pane.getGraphics();
g1.setColor(Color.PINK);
g1.drawLine(0,300,920,300);//----x---
g1.drawLine(410,0,410,720);//----y---
g1.dispose();
}

}/*methodactionPerformed*/
}
classLine
{
MainFramejb;
Line(MainFramejb)
{
this.jb=jb;
}
publicvoiddrawLipse(inta,intb)
{
intx,y;
doubled1,d2;
x=0;y=b;
d1=b*b+a*a*(-b+0.25);
Graphicsg=jb.pane.getGraphics();
g.setColor(Color.red);
g.drawLine(x+410,y+300,x+410,y+300);
g.drawLine(-x+410,-y+300,-x+410,-y+300);
g.drawLine(-x+410,y+300,x+410,-y+300);
g.drawLine(x+410,-y+300,x+410,-y+300);
try
{
while(b*b*(x+1)<a*a*(y-0.5))
{
if(d1<=0)
{
d1+=b*b*(2*x+3);
x++;
}
else
{
d1+=(b*b*(2*x+3)+a*a*(-2*y+2));
x++;
y--;
}
g.drawLine(x+410,y+300,x+410,y+300);
g.drawLine(-x+410,-y+300,-x+410,-y+300);
g.drawLine(-x+410,y+300,x+410,-y+300);
g.drawLine(x+410,-y+300,x+410,-y+300);
Thread.sleep(30);
}//topofwhile
}catch(Exceptione){}

d2=b*b*(x+0.5)*(x+0.5)+a*a*(y-1)*(y-1)-a*a*b*b;
try
{
while(y>0)
{
if(d2<=0)
{
d2+=b*b*(2*x+2)+a*a*(-2*y+3);
x++;
y--;
}
else
{
d2+=a*a*(-2*y+3);
y--;
}
g.drawLine(x+410,y+300,x+410,y+300);
g.drawLine(-x+410,-y+300,-x+410,-y+300);
g.drawLine(-x+410,y+300,x+410,-y+300);
g.drawLine(x+410,-y+300,x+410,-y+300);
Thread.sleep(30);
}/*bottomofwhile*/

}catch(Exceptione){}

}/*DrawLipse*/

}

{
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
}

⑷ 橢圓的計算公式

S=π(圓周率)×a×b(其中a,b分別是橢圓的半長軸,半短軸的長),或S=π(圓周率)×A×B/4(其中A,B分別是橢圓的長軸,短軸的長)。

橢圓周長計算公式:L=T(r+R)。

T為橢圓系數,可以由r/R的值,查表找出系數T值;r為橢圓短半徑;R為橢圓長半徑。

橢圓周長定理:橢圓的周長等於該橢圓短半徑與長半徑之和與該橢圓系數的積(包括正圓)。

關於橢圓的周長等於特定的正弦曲線在一個周期內的長度的證明:

半徑為r的圓柱上與一斜平面相交得到一橢圓,該斜平面與水平面的夾角為α,截取一個過橢圓短徑的圓。以該圓和橢圓的某一交點為起始轉過一個θ角。則橢圓上的點與圓上垂直對應的點的高度可以得到f(c)=r tanα sin(c/r)。

r:圓柱半徑;

α:橢圓所在面與水平面的角度;

c:對應的弧長(從某一個交點起往某一個方向移動);

以上為證明簡要過程,則橢圓(x*cosα)^2+y^2=r^2的周長與f(c)=r tanα sin(c/r)的正弦曲線在一個周期內的長度是相等的,而一個周期T=2πr,正好為一個圓的周長。


(4)橢圓演算法擴展閱讀:

橢圓是圍繞兩個焦點的平面中的曲線,使得對於曲線上的每個點,到兩個焦點的距離之和是恆定的。

因此,它是圓的概括,其是具有兩個焦點在相同位置處的特殊類型的橢圓。橢圓的形狀(如何「伸長」)由其偏心度表示,對於橢圓可以是從0(圓的極限情況)到任意接近但小於1的任何數字。

橢圓是封閉式圓錐截面:由錐體與平面相交的平面曲線。橢圓與其他兩種形式的圓錐截面有很多相似之處:拋物線和雙曲線,兩者都是開放的和無界的。圓柱體的橫截面為橢圓形,除非該截面平行於圓柱體的軸線。

橢圓也可以被定義為一組點,使得曲線上的每個點的距離與給定點(稱為焦點)的距離與曲線上的相同點的距離的比值給定行(稱為directrix)是一個常數。該比率稱為橢圓的偏心率。

也可以這樣定義橢圓,橢圓是點的集合,點其到兩個焦點的距離的和是固定數。

⑸ 橢圓面積公式的周長演算法

一、
L1 = π · qn / atan(n)
(b→a,q=a+b,n=((a-b)/a))^2
這是根據圓周長和割圓術原理推導的,精度一般。
二、
L2 = π · θ/(π/4) · (a - c + c/sinθ)
(b→0,c=√(a^2-b^2),θ=acos((a-b)/a)^1.1)
這是根據兩對扇形組成橢圓得特點推導的,精度一般。
三、
L3 = π · q(1 + mn)
(q=a+b,m=4/π-1,n=((a-b)/a)^3.3)
這是根據圓周長公式推導的,精度一般。
四、
L4 = π · √(2a^2 + 2b^2) · (1 + mn)
(m=2√(2/π)-1,n=((a-b)/a)^2.05)
這是根據橢圓a=b時得基本特點推導的,精度一般。
五、
L5 = √(4ab·π^2 + 15(a-b)^2) · (1 + mn)
( m=4/√(15)-1 ,n=((a-b)/a)^9 )
這是根據橢圓a=b,b=0時是特點推導的,精度較好。
六、
L6 = π · q(1 + 3h/(10 + √(4-3h)) · (1 + mn)
( q=a+b,h=((a-b)/(a+b))^2, m=22/7π-1,n=((a-b)/a)^33.697)
這是根據橢圓標准公式提煉的,精度很高。

⑹ 關於橢圓與雙曲線的一些技巧性演算法,也就是一些公式,越多越好

把點帶入原方程得到a與b的關系,離心率得到a和c的關系,根據a2=b2+c2,就能得到了

⑺ 橢圓周長的計算方法

橢圓周長近似公式:L=2πb+4(a-b)
橢圓周長定理:橢圓的周長等於該橢圓短半軸長為半徑的圓周長(2πb)加上四倍的該橢圓長半軸長(a)與短半軸長(b)的差

此題周長為4.5π+10

以下是幾個比較簡單的近似公式:
公式一~五為一般精度,滿足簡單計算需要;
公式六為高精度,滿足比較專業一些的計算需要。
這些公式均符合橢圓的基本規律,
當a=b時,L=2aπ,
當b=0時,L=0.
希望這些公式能夠給橢圓愛好者們帶來快樂。
一、
L1=πQN/arctgN

(b→a、Q=a+b、N=((a-b)/a)^2、)
這是根據圓周長和割圓術原理推導的,精度一般。

二、
L2=πθ/45°(a-c+c/sinθ)

(b→0, c=√(a^2-b^2), θ=arccos((a-b)/a)^1.1、)
這是根據兩對扇形組成橢圓的特點推導的,精度一般。

三、
L3=πQ(1+MN)

(Q=a+b、M=4/π-1、N=((a-b)/a)^3.3 、)
這是根據圓周長公式推導的,精度一般。

四、
L4=π√(2a^2+2b^2)(1+MN)

(Q=a+b、M=2√2/π-1、N=((a-b)/a)^2.05、)
這是根據橢圓a=b時的特點推導的,精度一般。

五、
L3=√(4abπ^2+15(a-b)^2)(1+MN)

( M=4/√15-1 、N=((a-b)/a)^9 )
這是根據橢圓a=b,b=0時的特點推導的,精度較好。

六、
L4=πQ(1+3h/(10+√(4-3h))(1+MN)

( Q=a+b、 H=((a-b)/(a+b))^2
M=22/7π-1、M=((a-b)/a)^33.697 、)
這是根據橢圓標准公式提煉的,精度很高。

下面是橢圓周長參考對照值:
a---b-------橢圓值
100~000---400.00000000
100~001---400.10983297
100~010---406.39741801
100~025---428.92108875
100~050---484.42241100
100~075---552.58730400
100~090---597.31604325
100~099---625.18088479
100~100---628.31853070

⑻ 常用數集和橢圓計算方法

特殊集合的表示 復數集
創建時間:2010年8月13日
常用數集的符號:

(1)全體非負整數的集合通常簡稱非負整數集(或自然數集),記作N

(2)非負整數集內排除0的集,也稱正整數集,記作N+(或N*)

(3)全體整數的集合通常稱作整數集,記作Z

(4)全體有理數的集合通常簡稱有理數集,記作Q

(5)全體實數的集合通常簡稱實數集,記作R

(6)復數集合計作C

正弦函數 sin (A)=a/h

餘弦函數 cos(A)=b/h

正切函數 tan (A)=a/b

餘切函數 cot (A)=b/a

正割函數 sec (A) =h/b

餘割函數 csc (A) =h/a

橢圓計算方法:

(1):畫長軸AB,短軸CD,AB和CD互垂平分於O點。

(2):連接AC。

(3):以O為圓心,OA為半徑作圓弧交OC延長線於E點。

(4):以C為圓心,CE為半徑作圓弧與AC交於F點。

(5):作AF的垂直平分線交CD延長線於G點,交AB於H點。

(6):截取H,G對於O點的對稱點H』,G』

(7):

以H,H』分別為圓心,HA,H『B為半徑作圓;再以G,G』分別為圓心,GC,G『D為半徑作圓。

橢圓的簡單性質

橢圓的倆長頂點與一短頂點所成的角大於橢圓上任一點與倆長頂點的連線

⑼ 橢圓周長怎麼計算,幾種方法

橢圓周長計算公式:L=T(r+R)

T為橢圓系數,可以由r/R的值,查表找出系數T值;r為橢圓短半徑;R為橢圓長半徑。

橢圓周長定理:橢圓的周長等於該橢圓短半徑與長半徑之和與該橢圓系數的積(包括正圓)。

關於橢圓的周長等於特定的正弦曲線在一個周期內的長度的證明:

半徑為r的圓柱上與一斜平面相交得到一橢圓,該斜平面與水平面的夾角為α,截取一個過橢圓短徑的圓。以該圓和橢圓的某一交點為起始轉過一個θ角。則橢圓上的點與圓上垂直對應的點的高度可以得到f(c)=r tanα sin(c/r)。

r:圓柱半徑、α:橢圓所在面與水平面的角度、c:對應的弧長(從某一個交點起往某一個方向移動)。

橢圓是封閉式圓錐截面:

由錐體與平面相交的平面曲線。橢圓與其他兩種形式的圓錐截面有很多相似之處:拋物線和雙曲線,兩者都是開放的和無界的。圓柱體的橫截面為橢圓形,除非該截面平行於圓柱體的軸線。

橢圓也可以被定義為一組點,使得曲線上的每個點的距離與給定點(稱為焦點)的距離與曲線上的相同點的距離的比值給定行(稱為directrix)是一個常數。該比率稱為橢圓的偏心率。

也可以這樣定義橢圓,橢圓是點的集合,點其到兩個焦點的距離的和是固定數。

⑽ 橢圓的演算法

橢圓的基本演算法是按照橢圓方程,轉化成編程語言。

熱點內容
vivo微信怎麼加密碼鎖 發布:2024-12-26 11:34:14 瀏覽:403
對蟻群演算法 發布:2024-12-26 11:15:53 瀏覽:807
tiobe編程語言社區 發布:2024-12-26 10:48:11 瀏覽:423
日立存儲微碼升級 發布:2024-12-26 10:43:48 瀏覽:152
如何建立家庭網站伺服器 發布:2024-12-26 10:40:46 瀏覽:185
安卓顯示e是什麼意思 發布:2024-12-26 10:35:13 瀏覽:705
電磁爐編程 發布:2024-12-26 10:30:51 瀏覽:97
經典福克斯壓縮比是多少 發布:2024-12-26 10:26:33 瀏覽:747
存取速度最快的存儲器是 發布:2024-12-26 10:17:39 瀏覽:66
我的世界伺服器只能邊跳邊走 發布:2024-12-26 09:55:26 瀏覽:464