与えられた: 3D 空間の 3 つの三角形の頂点、その三角形 (三角形の領域を含む) 上の点の x、y 座標。
希望: 指定された点の z 座標。
3 つの三角形の頂点はすべて異なる (x,y) 座標 (ハイトマップ座標) を持っているため、複数 (無限) の一致の場合は処理する必要はありません。
私はCでこれをやろうとしています。つまり、フロートなどの単純な数値型で動作するアルゴリズムが最適です(行列やベクトル演算はありません)。
与えられた: 3D 空間の 3 つの三角形の頂点、その三角形 (三角形の領域を含む) 上の点の x、y 座標。
希望: 指定された点の z 座標。
3 つの三角形の頂点はすべて異なる (x,y) 座標 (ハイトマップ座標) を持っているため、複数 (無限) の一致の場合は処理する必要はありません。
私はCでこれをやろうとしています。つまり、フロートなどの単純な数値型で動作するアルゴリズムが最適です(行列やベクトル演算はありません)。
これは通常、基礎となる操作の短い表記であるベクトル/行列で行われます。
2 つのベクトルを作成 U=(ux,uy) = point2 - O; V=(vx,vy) = point3 - O
u と v について線形システム x,y = u*U + v*V を解く
x = u * (p2x-ox) + v * (p3x-ox)
y = u * (p2y-oy) + v * (p3y-oy)
0 <= u,v <= 1 および 0<=u+v<=1 であることを確認し
ます。yes の場合、点 x、y は三角形の内側にあり、
z = u*(p2z-oz)+v*(p3z-オズ)