1

了解しました。この画像の内容を実現しようとしています。 https://dl.dropbox.com/u/28109593/dotsexample.png

これは重心座標系になると思いますが、Xは常に1に等しいのでしょうか。基本的に、三角形の最高点に近づいたり遠ざかったりするときにのみ増減する必要があります。これは私がこれまでに入手したコードです(JavaでLWJGLライブラリを使用していることに注意してください)。

public float getDist( Vector3f p, Vector3f a, Vector3f b, Vector3f c )
   {
       Vector3f v0 = new Vector3f(0,0,0);
       Vector3f.sub( c, a, v0 );
       Vector3f v1 = new Vector3f(0,0,0);
       Vector3f.sub( b, a, v1);
       Vector3f v2 = new Vector3f(0,0,0);
       Vector3f.sub( p, a, v2 );

       float dot00 = Vector3f.dot(v0, v0);
       float dot01 = Vector3f.dot(v0, v1);
       float dot02 = Vector3f.dot(v0, v2);
       float dot11 = Vector3f.dot(v1, v1);
       float dot12 = Vector3f.dot(v1, v2);

       float inverse = 1.0f / (dot00 * dot11 - dot01 * dot01);
       float u = (dot11 * dot02 - dot01 * dot12) * inverse;
       float v = (dot00 * dot12 - dot01 * dot02) * inverse;

       if((u >= 0) && (v >= 0) && (u + v <= 1)) return (float) (Math.sin(u) * Math.cos(v));
       else return 0;
   }

編集:私が求めているのは次のとおりです:三角形の内側の点が、三角形の空間内の最も低い点から移動した距離を取得する方法はありますか?1は三角形の最も高い点です(ほとんどの場合、遠くにあります)。最下位から)それがベクトルを逸脱することを考慮せずに?IEは、画像上の2つの赤い点が、上部のxとの距離が異なっていても、同じ座標を持っていることに気づきましたか?

Edit2:https://dl.dropbox.com/u/28109593/axisexample.png

4

1 に答える 1

2

あなたの言っていることが理解できれば、3D座標に三角形( )があり、反対側の点に比例して、一方のエッジからabc4番目の点()の標高を評価したいとします。p

b  --------------- 1.0
|\
| \
| p\ ------------- (result)
|   \
a----c  ---------- 0.0

この結果は、三角形上の点の3つの重心座標の1つであるという点で正しいです。

次のようなものをお勧めします。

  • 三角形の平面の法線を見つけます。vABC = cross(c-a, b-a)
  • vABCとに垂直な法線を見つけるacvPerpAC = cross(c-a, vABC)
  • abそれに関して ベクトルを評価します。sAB = dot(vPerpAC, b-a)
  • ターゲットポイントを評価します。 sAP = dot(vPerpAC, p-a)
  • 最終結果は、これらの最後の2つの評価の比率です。 return sAP / sAB

これは、実際には三角形上にないポイントに対して堅牢である必要があります。これらのポイントは、平面に垂直に効果的に投影されabcます。


abc事前に知っている場合は、次の値を事前に計算できることに注意してください。

  • スケーリングされた法線:vScaled = vPerpAC / sAB
  • スケーリングされたオフセット:sScaled = dot(vScaled, a)

一連のポイントの結果をpより効率的に計算します。

  • return dot(vScaled, p) - sScaled

これにより、方向付けられた平面が効果的に事前計算され、事前にスケーリングされて、目的の結果が直接提供されます。

于 2012-06-22T22:25:59.373 に答える