2017-01-01 10 views
2

trimeshで使用されているような三角グリッドがあります。ここで、z - 座標はx,yの(平滑)関数です。三角測量は、いくつかのインデックス行列tによって与えられているので、私は今、私はいくつかの一般的x0,y0に格子点、すなわち間のこのapprixmationを評価したいと思います補間三角形グリッド

trimesh(t,x,y,f(x,y)) 

としてグリッドによって与えられ、この区分的線形近似を表示することができます。私はgriddataを認識していますが、この関数は新しい三角形分割を作成します。私は与えられた三角形分割tを使用したいと思います。

答えて

1

ここで、三角測量に基づく線形補間は、新しいバージョンのMATLABでは推奨されていないOctave関数tsearchを使用して説明されています。

tri = delaunay (X, Y); 

xi, yiとして補間する点の座標:代わりに、delaunayによって作成された三角測量を考えるpointLocation

を使用することができます。三角形

pts= tri(idx, :); 

equation of a plane(三角形)所与の3点をrepesentsマトリックスを作成するの頂点の

idx = tsearch (X, Y, tri, xi, yi); 

抽出インデックス:点を含む三角形見つける

使用tsearch又はpointLocation

m=[X(pts);Y(pts);Z(pts);ones(1,3)].'; 

は、det(m)=0に基づいてzを計算します。 [4 ,4]行列の行列式を計算する式は、Wikipedia

z = (... 
      -xi*det(m(:,2:end)) + ... 
      yi*det([m(:,1) m(:,3:end)]) +... 
      det(m(:,1:end-1))... 
     )... 
     /det([m(:,1:2) m(:,end)]);