要素内補間のソースを表示
←
要素内補間
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{出典の明記|date=2011年10月}} [[File:Outline.PNG|thumb|right|300px|3角形のケース: 各節点'''''p'''''<sub>0</sub>, '''''p'''''<sub>1</sub>, '''''p'''''<sub>2</sub> での値が既知 (10, 20, 30) の場合に、要素内の点 ''p'' での値はいくつになるのだろう?これを求めるのが要素内補間である。]] '''要素内補間'''(ようそないほかん)とは、[[数値解析]]において[[計算格子|要素]]の各節点の既知量から、要素内の値を[[補間]]して求めることをいう。この要素内補間は、[[内挿]]とも呼ばれることがある。要素内補間は、例えば地図の等高線、[[CAD]]、[[CAE]]、[[CG]]など、要素が使用される図形処理において、要素内の任意の位置の値を計算する際にも使用される。 与えられた節点情報のみ(要素情報は使用しない)から補間する手法もあるが、これらは本説明に含まれない。 要素には、線分(2節点)、3角形(3節点)、4面体(4節点)などがある。 == 線分要素内の補間 == [[File:Segment interpolation.PNG|thumb|right|300px|線分要素のケース: ''p''<sub>0</sub>, ''p''<sub>1</sub> の各節点値が既知(10, 20)の場合に、線分内の''p'' の値を求める。]] === 全体座標系と局所座標系の関係 === 線分要素内の点'''''p''''' は、節点'''''p'''''<sub>0</sub>, '''''p'''''<sub>1</sub> により :<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> である。直感的には、基点を ''p''<sub>0</sub> として、そこから ''p''<sub>1</sub> までの距離の比率 ''u'' で線分内の座標値 ''p'' を求めたことになる。 *''u'' = 0 の場合には点 ''p'' は ''p''<sub>0</sub> を示し、''u'' = 1 の場合には ''p''<sub>1</sub> を示す。 *前述の表現は、直線のパラメトリックまたは、[[媒介変数]]''u'' による定義と呼ばれることもある。 === 線形補間 === 全体座標系と局所座標系の関係と同様に、節点 '''''p'''''<sub>0</sub>, '''''p'''''<sub>1</sub> での各値を ''C''<sub>0</sub>, ''C''<sub>1</sub> とし[[線形補間]]すると、点 ''p'' での値 ''C'' は :<math>C=C_0+(C_1-C_0)u</math> と表せる。 === 計算例 === 節点'''''p'''''<sub>0</sub> (5, 5, 0), '''''p'''''<sub>1</sub> (10, 10, 0) で各節点の値がそれぞれ''C''<sub>0</sub> = 10, ''C''<sub>1</sub> = 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角形要素内の補間 == [[File:Face interpolation.PNG|thumb|right|300px| 面要素のケース: 接点 '''''p'''''<sub>0</sub>, '''''p'''''<sub>1</sub>, '''''p'''''<sub>3</sub> での値が既知でそれぞれ (10, 20, 30) の場合に、面内の点 '''''p''''' の値を求める。]] [[File:face_interpolation4.PNG|thumb|right|300px| 局所座標系上での位置座標を求めれば点 '''''p''''' での値が求まる。]] === 局所座標系と全体座標系の変換 === 点 '''''p'''''<sub>0</sub> を原点とする、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''''' の局所座標系の座標を ''u<sub>p</sub>'', ''v<sub>p</sub>'' 、全体座標系の座標を ''x<sub>p</sub>'', ''y<sub>p</sub>'', ''z<sub>p</sub>'' とすると以下の通りとなる。 :<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> === 線形補間 === 節点'''''p'''''<sub>0</sub>, '''''p'''''<sub>1</sub>, '''''p'''''<sub>2</sub> での各値を''C''<sub>0</sub>, ''C''<sub>1</sub>, ''C''<sub>2</sub>とすると、要素内の点'''''p''''' での値''C'' は :<math>C=C_0+u_p(C_1-C_0)+v_p(C_2-C_0)</math> と表せる。ここで''u<sub>p</sub>'', ''v<sub>p</sub>'' は点'''''p''''' の局所座標系での座標である。 *''u<sub>p</sub>'' = 0, ''v<sub>p</sub>'' = 0 の場合には、''C'' = ''C''<sub>0</sub> ('''''p'''''<sub>0</sub> の値)を示す。 *''u<sub>p</sub>'' = 1, ''v<sub>p</sub>'' = 0 の場合には、''C'' = ''C''<sub>1</sub> ('''''p'''''<sub>1</sub> の値)を示す。 *''u<sub>p</sub>'' = 0, ''v<sub>p</sub>'' = 1 の場合には、''C'' = ''C''<sub>2</sub> ('''''p'''''<sub>2</sub> の値)を示す。 *''u<sub>p</sub>'', ''v<sub>p</sub>'' ≥ 0 かつ ''u<sub>p</sub>'' + ''v<sub>p</sub>'' ≤ 1 の場合には、点'''''p''''' は要素の内部に存在する。 <!--*<math>u<0.0</math>または <math>v<0.0</math>または <math>u+v>1.0</math> の場合には、座標pは要素の外部に存在する。--> ===計算例=== [[File:face_interpolation6.PNG|thumb|right|300px|重心位置と '''''p'''''<sub>1</sub>, '''''p'''''<sub>2</sub> の中点位置(赤色は既知量)]] 節点座標が'''''p'''''<sub>0</sub> (0, 0, 0), '''''p'''''<sub>1</sub> (5, 0, 0), '''''p'''''<sub>2</sub> (5, 5, 0) とし、各節点の既知量は、それぞれ''C''<sub>0</sub> = 10, ''C''<sub>1</sub> = 20,''C''<sub>2</sub> = 30とすると、 #重心位置での値 #:重心位置'''''p'''''<sub>G</sub> の座標は (10/3, 5/3, 0) で、全体座標系から局所座標系での座標を求めると、(''u''<sub>G</sub>, ''v''<sub>G</sub> ) = (1/3, 1/3) となる。これを補間式にあてはめると ''C'' <sub>G</sub> = 20 となる。重心位置のため、[[平均]]値 (''C''<sub>0</sub> + ''C''<sub>1</sub> + ''C''<sub>2</sub> ) / 3と同じである。 #'''''p'''''<sub>1</sub> と'''''p'''''<sub>2</sub> の中点位置座標での値 #:'''''p'''''<sub>1</sub> と'''''p'''''<sub>2</sub> の中点位置'''''p'''''<sub>12</sub> の全体座標系での座標は (5, 5/2, 0) で、全体座標系から局所座標系での座標 (''u''<sub>12</sub>, ''v''<sub>12</sub> ) を求めると、(1/2, 1/2) となる。これを補間式にあてはめると ''C''<sub>12</sub> = 25 となる。 == 4面体要素内の補間 == [[File:Element interpolation.PNG|thumb|right|300px|4面体要素のケース: 節点'''''p'''''<sub>0</sub>, '''''p'''''<sub>1</sub>, '''''p'''''<sub>3</sub>, '''''p'''''<sub>4</sub> での値が既知 (10, 20, 30, 40) の場合に、要素内の点'''''p''''' の値を求める。]] === 局所座標系と全体座標系の変換 === 4面体で構成される局所座標系は、基底ベクトル ('''''e'''<sub>u</sub>'', '''''e'''<sub>v</sub>'', '''''e'''<sub>w</sub>'' ) から得られ、全体座標系への変換行列は、局所座標系の座標を''u<sub>p</sub>'', ''v<sub>p</sub>'', ''w<sub>p</sub>'' と置くと以下の通りとなる。 :<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> <!--逆行列の具体的表示は記事が冗長になるので削除。 尚、<math>3 \times 3</math>の行列を'''A'''と置くと、逆行列は、以下の式により得られる. <math> A= \left( \begin{array}{ccc} a_{00} & a_{01} & a_{02} \\ a_{10} & a_{11} & a_{12} \\ a_{20} & a_{21} & a_{22} \\ \end{array} \right) </math> <math> A^{-1} =\frac{1} { \left| \begin{array}{ccc} a_{00} & a_{01} & a_{02} \\ a_{10} & a_{11} & a_{12} \\ a_{20} & a_{21} & a_{22} \\ \end{array} \right| } \left( \begin{array}{ccc} a_{11}a_{22} - a_{12}a_{21} & a_{02}a_{21} - a_{01}a_{22} &a_{01}a_{12} - a_{02}a_{11} \\ a_{12}a_{20} - a_{10}a_{22} & a_{00}a_{22} - a_{02}a_{20} &a_{02}a_{10} - a_{00}a_{12} \\ a_{10}a_{21} - a_{11}a_{20} & a_{01}a_{20} - a_{00}a_{21} &a_{00}a_{11} - a_{01}a_{10} \\ \end{array} \right) </math> <math> =\frac{1} { a_{00}(a_{11}a_{22}- a_{12}a_{21}) - a_{01}(a_{10}a_{22}- a_{12}a_{20}) + a_{02}(a_{10}a_{21}- a_{11}a_{20}) } \left( \begin{array}{ccc} a_{11}a_{22} - a_{12}a_{21} & a_{02}a_{21} - a_{01}a_{22} &a_{01}a_{12} - a_{02}a_{11} \\ a_{12}a_{20} - a_{10}a_{22} & a_{00}a_{22} - a_{02}a_{20} &a_{02}a_{10} - a_{00}a_{12} \\ a_{10}a_{21} - a_{11}a_{20} & a_{01}a_{20} - a_{00}a_{21} &a_{00}a_{11} - a_{01}a_{10} \\ \end{array} \right) </math> --> ===線形補間=== 節点'''''p'''''<sub>0</sub>, '''''p'''''<sub>1</sub>, '''''p'''''<sub>2</sub>, '''''p'''''<sub>3</sub> での各値を''C''<sub>0</sub>, ''C''<sub>1</sub>, ''C''<sub>2</sub>, ''C''<sub>3</sub> とすると、点'''''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> と表せる。ここで''u<sub>p</sub>'', ''v<sub>p</sub>'', ''w<sub>p</sub>'' は点'''''p''''' の局所座標系での座標である。 *''u'' = 0, ''v'' = 0, ''w'' = 0 の場合には、''C'' = ''C''<sub>0</sub> ('''''p'''''<sub>0</sub> の値)を示す。 *''u'' = 1, ''v'' = 0, ''w'' = 0 の場合には、''C'' = ''C''<sub>1</sub> ('''''p'''''<sub>1</sub> の値)を示す。 *''u'' = 0, ''v'' = 1, ''w'' = 0 の場合には、''C'' = ''C''<sub>2</sub> ('''''p'''''<sub>2</sub> の値)を示す。 *''u'' = 0, ''v'' = 0, ''w'' = 1 の場合には、''C'' = ''C''<sub>3</sub> ('''''p'''''<sub>3</sub> の値)を示す。 *''u'', ''v'', ''w'' ≥ 0 かつ ''u'' + ''v'' + ''w'' ≤ 1 の場合には、点'''''p''''' は要素の内部に存在する。 <!--*<math>u<0.0</math>または <math>v<0.0</math>または<math>w<0.0</math>または <math>u+v>1.0</math> の場合には、座標pは要素の外部に存在する。--> === 計算例 === 節点座標が'''''p'''''<sub>0</sub> (0, 0, 0), '''''p'''''<sub>1</sub> (5, 0, 0), '''''p'''''<sub>2</sub> (5, 5, 0), '''''p'''''<sub>3</sub> (0, 0, 5)、各節点の既知量はそれぞれ''C''<sub>0</sub> = 10, ''C''<sub>1</sub> = 20, ''C''<sub>2</sub> = 30, ''C''<sub>3</sub> = 40 とする。 このとき、重心位置'''''p'''''<sub>G</sub> での座標は、(5/2, 5/4, 5/4) で、全体座標系から局所座標系での座標を求めると、 (''u''<sub>G</sub>, ''v''<sub>G</sub>, ''w''<sub>G</sub> ) = (1/4, 1/4, 1/4)となる。これを補間式にあてはめると''C'' = 25 となる。重心位置のため、平均値 (''C''<sub>0</sub> + ''C''<sub>1</sub> + ''C''<sub>2</sub> + ''C''<sub>3</sub>) / 4 と同じになる。 == 関連項目 == *[[CAD]] *[[CAE]] *[[CG]] *[[計算科学]] *[[シミュレーション]] *[[数値解析]] {{DEFAULTSORT:ようそないほかん}} [[Category:補間]] [[Category:物理数学]] [[Category:CAD]] [[Category:CAE]] [[Category:コンピュータグラフィックス]] [[Category:数学に関する記事]]
このページで使用されているテンプレート:
テンプレート:出典の明記
(
ソースを閲覧
)
要素内補間
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報