0

了解しました。垂直ベクトルを計算せずに、2D三角形の点の距離を取得しようとしています。

float qd = Vector2f.dot(new Vector2f(pos.x, pos.z),
                        new Vector2f(normal.pos.x, normal.pos.z)) -
           Vector2f.dot(new Vector2f(q.center.x, q.center.z),
                        new Vector2f(normal.pos.x, normal.pos.z));

それが私が使っているコードです。(注:3fベクトルを2dベクトルに変換しますが、それについて心配する必要はありません)。計算結果は0から1IE0.5か何かである必要があります。

私がまだ正しく説明していない場合、多分これは役立つでしょうか? 軸の例

私の質問は、垂直ベクトルの距離を計算せずに、2次元三角形の点の距離を取得するにはどうすればよいですか?IE三角形が上向き(y = -1)で傾斜がない場合、Xがない三角形の距離が必要になります。

編集1:あなたが言っていることについて、バンサー、これは私がそれから得たものであり、それは機能しませんが、それはほぼ機能しているようです。

float d = (float) Math.sqrt( 0 /*cause the two x's should be the same */ + Math.pow(pos.z - q.max.z, 2));   
float h = (float) Math.sqrt( 0 /*cause the two x's should be the same */ + Math.pow(q.min.z - q.max.z, 2)); 

float myDist = d/h;
4

1 に答える 1

2

三角形がABCで、点がPであるとします。探している数値は、PからABまでの距離をCからABまでの距離で割ったものです。これは、対応する面積の比率と同じです。したがって、2つの領域を計算できます。

Area(ABP) / Area(ABC)

三角形の面積を計算する最良の方法は、三角形についてどのような情報を持っているかによって異なります。

頂点のみがある場合は、次を使用できます。

Area(ABP) / Area(ABC) = ( Ax*By - Ax*Py + Ay*Px - Ay*Bx + Bx*Py - By*Px ) /
                        ( Ax*By - Ax*Cy + Ay*Cx - Ay*Bx + Bx*Cy - By*Cx )
于 2012-06-24T07:23:54.137 に答える