admin menu ≫  image  writes  admin
スポンサーサイト 
--.--.--.-- 
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
台形法 
2009.05.20.Wed 
市販の計算ソフトを使うようになってから、自作ソフト使ってないなぁ?・・・
↓こんなのもあった。多角形の面積と図心を計算する台形法のCプログラムコード

void Ag( int n, double x[], double y[], double *Area )
{
int n1=1, n2=2;
double x1, x2, x3, y1, y2, y3;
double A = 0.0, xo = 0.0, yo = 0.0;
while( n2 != 1 ){
n2 = n1 % n + 1;
A += ( x[n2] - x[n1] ) * ( y[n2] + y[n1] ) / 2.0;
x3 = ( pow( x[n2], 3.0 ) - pow( x[n1], 3.0 ) )
* ( y[n2] - y[n1] ) / 3.0;
x2 = ( pow( x[n2], 2.0 ) - pow( x[n1], 2.0 ) )
* ( x[n2] * y[n1] - x[n1] * y[n2] ) / 2.0;
x1 = x[n2] - x[n1];
if( x1 != 0.0 ) xo += ( x3 + x2 ) / x1;
y3 = ( pow( y[n2], 3.0 ) - pow( y[n1], 3.0 ) )
* ( x[n2] - x[n1] ) / 3.0;
y2 = ( pow( y[n2], 2.0 ) - pow( y[n1], 2.0 ) )
* ( y[n2] * x[n1] - y[n1] * x[n2] ) / 2.0;
y1 = y[n2] - y[n1];
if( y1 != 0.0 ) yo += ( y3 + y2 ) / y1;
n1 = n2;
}
//Y座標の計算結果がマイナスになるので、計算結果を返す時にプラスにする.
*Aria = A; //ポインタ*Ariaに面積の計算結果Aを返す
x[0] = xo / A; //配列変数のx[0]に図心(X座標)を返す
y[0] = -yo / A; //配列変数のy[0]に図心(Y座標)を返す
}

面積だけなら・・・

double area( int n, double x[], double y[] )
{
int n1 = 1, n2 = 2;
double A = 0.0;

while( n2 != 1 ){
n2 = n1 % n + 1;
A += ( x[n2] - x[n1] ) * ( y[n2] + y[n1] ) / 2.0;
n1 = n2;
}
return( A ); //面積Aを返す
}


関連記事
スポンサーサイト
* スポンサーサイト台形法へのコメント *
   

台風画報


ナショジオニュース

降水短時間予報

RSSフィード

月別アーカイブ

ブログ内の検索

プロフィール


  • Designed by Il mio diario
  • Powered by FC2BLOG
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。