稜線の法線方向ベクトルを求める 関数は以下のようになる。
/* 稜線の法線方向ベクトル */ void WH_Fem__Simplex2D__whV_n (double whV_x0[2], double whV_x1[2], double whV_x2[2], int Iedge, double OUT__whV_n[2]) /* 入力引数: whV_x0, whV_x1, whV_x2 はベクトルで、各頂点の位置 Iedge は0から2までの整数で、稜線ID 出力引数: OUT__whV_n はベクトルで、法線方向 */ { double x0 = whV_x0[0]; double x1 = whV_x1[0]; double x2 = whV_x2[0]; double y0 = whV_x0[1]; double y1 = whV_x1[1]; double y2 = whV_x2[1]; double l; WH_Fem__Simplex2D__l (whV_x0, whV_x1, whV_x2, Iedge, &l); switch (Iedge) { case 0: OUT__whV_n[0] = (y2 - y1) / l; OUT__whV_n[1] = (x1 - x2) / l; break; case 1: OUT__whV_n[0] = (y0 - y2) / l; OUT__whV_n[1] = (x2 - x0) / l; break; case 2: OUT__whV_n[0] = (y1 - y0) / l; OUT__whV_n[1] = (x0 - x1) / l; break; default: assert(0); break; } }