要素内補間

提供: miniwiki
移動先:案内検索
ファイル:Outline.PNG
3角形のケース: 各節点p0, p1, p2 での値が既知 (10, 20, 30) の場合に、要素内の点 p での値はいくつになるのだろう?これを求めるのが要素内補間である。

要素内補間(ようそないほかん)とは、数値解析において要素の各節点の既知量から、要素内の値を補間して求めることをいう。この要素内補間は、内挿とも呼ばれることがある。要素内補間は、例えば地図の等高線、CADCAECGなど、要素が使用される図形処理において、要素内の任意の位置の値を計算する際にも使用される。

与えられた節点情報のみ(要素情報は使用しない)から補間する手法もあるが、これらは本説明に含まれない。

要素には、線分(2節点)、3角形(3節点)、4面体(4節点)などがある。

線分要素内の補間

ファイル:Segment interpolation.PNG
線分要素のケース: p0, p1 の各節点値が既知(10, 20)の場合に、線分内のp の値を求める。

全体座標系と局所座標系の関係

線分要素内の点p は、節点p0, p1 により

[math]\boldsymbol{p}=\boldsymbol{p}_0+(\boldsymbol{p}_1-\boldsymbol{p}_0)u[/math]

と表せる。ここで局所座標u は 0 < u < 1 を満たす実数で、

[math]u=\frac{|p-p_0|}{|p_1-p_0|}[/math]

である。直感的には、基点を p0 として、そこから p1 までの距離の比率 u で線分内の座標値 p を求めたことになる。

  • u = 0 の場合には点 pp0 を示し、u = 1 の場合には p1 を示す。
  • 前述の表現は、直線のパラメトリックまたは、媒介変数u による定義と呼ばれることもある。

線形補間

全体座標系と局所座標系の関係と同様に、節点 p0, p1 での各値を C0, C1 とし線形補間すると、点 p での値 C

[math]C=C_0+(C_1-C_0)u[/math]

と表せる。

計算例

節点p0 (5, 5, 0), p1 (10, 10, 0) で各節点の値がそれぞれC0 = 10, C1 = 20 の場合に、線分の中点p (15/2, 15/2, 0) での値C は、

[math]u=\frac{|\boldsymbol{p}-\boldsymbol{p}_0|}{|\boldsymbol{p}_1-\boldsymbol{p}_0|}=0.5[/math]

より

[math]C=C_0+(C_1-C_0)u=15[/math]

になる。

3角形要素内の補間

ファイル:Face interpolation.PNG
面要素のケース: 接点 p0, p1, p3 での値が既知でそれぞれ (10, 20, 30) の場合に、面内の点 p の値を求める。
ファイル:Face interpolation4.PNG
局所座標系上での位置座標を求めれば点 p での値が求まる。

局所座標系と全体座標系の変換

p0 を原点とする、3角形で構成される局所座標系は、基底ベクトル

[math]\begin{align} \boldsymbol{e}_u &= \boldsymbol{p}_1 - \boldsymbol{p}_0 \\ \boldsymbol{e}_v &= \boldsymbol{p}_2 - \boldsymbol{p}_0 \\ \end{align}[/math]

から得られ、全体座標系への変換行列は、点 p の局所座標系の座標を up, vp 、全体座標系の座標を xp, yp, zp とすると以下の通りとなる。

[math] \boldsymbol{p} = \boldsymbol{p}_0 + u_p\boldsymbol{e}_u + v_p\boldsymbol{e}_v[/math]

または成分で表せば、

[math] \left( \begin{array}{c} x_p \\ y_p \\ z_p \\ \end{array} \right) = \left( \begin{array}{c} x_{p0} \\ y_{p0} \\ z_{p0} \end{array} \right) + \left( \begin{array}{ccc} x_{eu} & x_{ev} \\ y_{eu} & y_{ev} \\ z_{eu} & z_{ev} \end{array} \right) \left( \begin{array}{c} u_p \\ v_p \end{array} \right) [/math]

線形補間

節点p0, p1, p2 での各値をC0, C1, C2とすると、要素内の点p での値C

[math]C=C_0+u_p(C_1-C_0)+v_p(C_2-C_0)[/math]

と表せる。ここでup, vp は点p の局所座標系での座標である。

  • up = 0, vp = 0 の場合には、C = C0p0 の値)を示す。
  • up = 1, vp = 0 の場合には、C = C1p1 の値)を示す。
  • up = 0, vp = 1 の場合には、C = C2p2 の値)を示す。
  • up, vp ≥ 0 かつ up + vp ≤ 1 の場合には、点p は要素の内部に存在する。

計算例

ファイル:Face interpolation6.PNG
重心位置と p1, p2 の中点位置(赤色は既知量)

節点座標がp0 (0, 0, 0), p1 (5, 0, 0), p2 (5, 5, 0) とし、各節点の既知量は、それぞれC0 = 10, C1 = 20,C2 = 30とすると、

  1. 重心位置での値
    重心位置pG の座標は (10/3, 5/3, 0) で、全体座標系から局所座標系での座標を求めると、(uG, vG ) = (1/3, 1/3) となる。これを補間式にあてはめると C G = 20 となる。重心位置のため、平均値 (C0 + C1 + C2 ) / 3と同じである。
  2. p1p2 の中点位置座標での値
    p1p2 の中点位置p12 の全体座標系での座標は (5, 5/2, 0) で、全体座標系から局所座標系での座標 (u12, v12 ) を求めると、(1/2, 1/2) となる。これを補間式にあてはめると C12 = 25 となる。

4面体要素内の補間

ファイル:Element interpolation.PNG
4面体要素のケース: 節点p0, p1, p3, p4 での値が既知 (10, 20, 30, 40) の場合に、要素内の点p の値を求める。

局所座標系と全体座標系の変換

4面体で構成される局所座標系は、基底ベクトル (eu, ev, ew ) から得られ、全体座標系への変換行列は、局所座標系の座標をup, vp, wp と置くと以下の通りとなる。

[math] \boldsymbol{p} = \boldsymbol{p}_0 + u_p\boldsymbol{e}_u + v_p\boldsymbol{e}_v + w_p\boldsymbol{e}_w [/math]

または成分で表せば、

[math] \left( \begin{array}{c} x_p \\ y_p \\ z_p \\ \end{array} \right) = \left( \begin{array}{c} x_{p0} \\ y_{p0} \\ z_{p0} \end{array} \right) + \left( \begin{array}{ccc} x_{eu} & x_{ev} & x_{ew} \\ y_{eu} & y_{ev} & y_{ew} \\ z_{eu} & z_{ev} & z_{ew} \end{array} \right) \left( \begin{array}{c} u_p \\ v_p \\ w_p \end{array} \right) [/math]

ただし

[math]\begin{align} &\boldsymbol{e}_u = \boldsymbol{p}_1 - \boldsymbol{p}_0 \\ &\boldsymbol{e}_v = \boldsymbol{p}_2 - \boldsymbol{p}_0 \\ &\boldsymbol{e}_w = \boldsymbol{p}_3 - \boldsymbol{p}_0 \end{align}[/math]

である。

全体座標系から局所座標系への変換は、局所座標系から全体座標系への変換行列の逆行列を求めることで得られる。

[math] \left( \begin{array}{c} u_p \\ v_p \\ w_p \end{array} \right) = \left( \begin{array}{ccc} x_{eu} & x_{ev} & x_{ew} \\ y_{eu} & y_{ev} & y_{ew} \\ z_{eu} & z_{ev} & z_{ew} \end{array} \right) ^{-1} \left( \left( \begin{array}{c} x_p \\ y_p \\ z_p \\ \end{array} \right) - \left( \begin{array}{c} x_{p0} \\ y_{p0} \\ z_{p0} \end{array} \right) \right) [/math]

線形補間

節点p0, p1, p2, p3 での各値をC0, C1, C2, C3 とすると、点p の値C

[math]C=C_0+u_p(C_1-C_0)+v_p(C_2-C_0)+w_p(C_3-C_0)[/math]

と表せる。ここでup, vp, wp は点p の局所座標系での座標である。

  • u = 0, v = 0, w = 0 の場合には、C = C0p0 の値)を示す。
  • u = 1, v = 0, w = 0 の場合には、C = C1p1 の値)を示す。
  • u = 0, v = 1, w = 0 の場合には、C = C2p2 の値)を示す。
  • u = 0, v = 0, w = 1 の場合には、C = C3p3 の値)を示す。
  • u, v, w ≥ 0 かつ u + v + w ≤ 1 の場合には、点p は要素の内部に存在する。

計算例

節点座標がp0 (0, 0, 0), p1 (5, 0, 0), p2 (5, 5, 0), p3 (0, 0, 5)、各節点の既知量はそれぞれC0 = 10, C1 = 20, C2 = 30, C3 = 40 とする。

このとき、重心位置pG での座標は、(5/2, 5/4, 5/4) で、全体座標系から局所座標系での座標を求めると、 (uG, vG, wG ) = (1/4, 1/4, 1/4)となる。これを補間式にあてはめるとC = 25 となる。重心位置のため、平均値 (C0 + C1 + C2 + C3) / 4 と同じになる。

関連項目