2

与えられた: 3D 空間の 3 つの三角形の頂点、その三角形 (三角形の領域を含む) 上の点の x、y 座標。

希望: 指定された点の z 座標。

3 つの三角形の頂点はすべて異なる (x,y) 座標 (ハイトマップ座標) を持っているため、複数 (無限) の一致の場合は処理する必要はありません。

私はCでこれをやろうとしています。つまり、フロートなどの単純な数値型で動作するアルゴリズムが最適です(行列やベクトル演算はありません)。

4

1 に答える 1

3

これは通常、基礎となる操作の短い表記であるベクトル/行列で行われます。

  • 3 つの頂点から基準点を選択 O = (ox, oy) = Point1
  • 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-オズ)

于 2012-10-26T11:58:07.153 に答える