3D地形。
平面を定義する3つの頂点があります。(高さマップで最も近い3つのピクセル)
その平面にx、zがあります。(世界の私の場所)
y切片をどのように見つけますか?(私がその平面の表面に立つように)
平面の方程式は次のとおりです。
A x + B y + C z = D、ここで、D = A x0 + B y0 + C z0、
頂点が 3 つある場合は、頂点から 2 つのベクトルを見つけます。たとえば、3 つの頂点 T、U、V の場合、ベクトルTUとベクトルUVがあります。
2 つのベクトルの外積を求めます。これが n1、n2、n3 の 3 つのコンポーネントを持つ法線ベクトルnです。
A = n1
B = n2
C = n3
ポイントの1つを取ります。その点の座標は x0、y0、z0 です。
これを式に入力して D を計算します。
次に、x と z を x と z に置き換えて、y を解きます。
したがって、最終的に y は次のようになります。
y = (A*x0 + B*y0 + C*z0 - A*x - C*z)/B
私の代数が間違っていたら、誰かが私を訂正してください。
外積は次のように計算できます。
それぞれ成分 a1、a2、a3 および b1、b2、b3 を持つ2 つのベクトルaおよびbの場合、外積は次のようになります。
これは次のようになります:
A = i-hat の係数 (太字の i)
B = j-hat の係数 (太字の j)
C = k-hat の係数 (太字の k)
あなたは、高さマップで最も近い 3 つのピクセルを見ていると言っています。これは、頂点を抽出するための規則的なグリッドがあることを前提としています。この場合、画像補間法を使用して、eboix またはバイキュービック補間からの回答と同様の線形を実行できます。高さの値は、画像処理ドメインの明るさの値に相当します。線形の場合は計算がはるかに簡単で、グリッド構造により単純なフォームを使用できます。次のように、c をセル サイズで、p、q、r を 3 つの頂点の高さの値とします。
p q
+--.
| /
|/
r
x、y は直角三角形の脚に沿った距離です。三角形はもちろん、x、y 平面上の 3 つの頂点の投影です。次に、補間された高さの値は
z = (q-p)/c * x + (r-q)/c * y