next up previous contents
: 表面の面積 : 体積 : 体積   目次

実装

体積を求める 関数は以下のようになる。

/* 体積 */
void WH_Fem__Simplex3D__V
(double whV_x0[3], 
 double whV_x1[3], 
 double whV_x2[3],
 double whV_x3[3],
 double *OUT__V)
/*
  入力引数:
    whV_x0, whV_x1, whV_x2, whV_x3 はベクトルで、各頂点の位置
  出力引数:
    OUT__V はスカラーで、体積
*/
{
  double x0 = whV_x0[0];
  double x1 = whV_x1[0];
  double x2 = whV_x2[0];
  double x3 = whV_x3[0];
  double y0 = whV_x0[1];
  double y1 = whV_x1[1];
  double y2 = whV_x2[1];
  double y3 = whV_x3[1];
  double z0 = whV_x0[2];
  double z1 = whV_x1[2];
  double z2 = whV_x2[2];
  double z3 = whV_x3[2];

  *OUT__V = 1.0 / 6 * 
    (- x0 * y1 * z2 + x0 * y1 * z3 + x0 * y2 * z1
     - x0 * y2 * z3 - x0 * y3 * z1 + x0 * y3 * z2
     + x1 * y0 * z2 - x1 * y0 * z3 - x1 * y2 * z0
     + x1 * y2 * z3 + x1 * y3 * z0 - x1 * y3 * z2
     - x2 * y0 * z1 + x2 * y0 * z3 + x2 * y1 * z0
     - x2 * y1 * z3 - x2 * y3 * z0 + x2 * y3 * z1
     + x3 * y0 * z1 - x3 * y0 * z2 - x3 * y1 * z0
     + x3 * y1 * z2 + x3 * y2 * z0 - x3 * y2 * z1);
}



Hiroshi KAWAI 平成15年8月11日