0

私は今一日を探していましたが、必要なものについての助けを見つけることができませんでした。

-lines-と-planes-に関しては多くの提案と解決策がありますが、-segments-と-planes-についてはほとんどありません。特に、法線と点によって定義される平面については何もありません。平面の一般的な参照は法線と距離を通りますが、私の平面は3D点と法線です。

基本的に、2点で形成されるセグメントの面上の交点を決定するために何が必要かを理解するのに助けが必要です。

Vector3 point1 = new Vector3 (-4,-5,-6);
Vector3 point2 = new Vector3 (5,3,2); 
                           //normal            //point
Plane plane1 = new plane ( new Vector3(0,0,1), new Vector3(4,2,1));

Vector3 intersection = ???

内積と点の距離のおかげで交差点があるかどうかを判断するのは比較的簡単ですが、「通常の距離」の平面定義と「通常の点」の平面定義では状況が明らかに異なるため、私の努力にもかかわらず、交差点の式はわかりません。私が得た結果が「飛行機上」ではなく、かなり前と後ろにあることを考えると、私が持っているものです。

助けていただければ幸いです。

ありがとう。

4

1 に答える 1

1

ポイント+法線を法線+距離に変換できます

Nを法線(単位長に正規化)とします。距離d=-np(あなたが持っている点との内積)。ここを参照してくださいhttp://mathworld.wolfram.com/Plane.html

セグメントは、ラインとそれほど違いはありません。線と平面の交点の方程式の基本的なことを実行してから、点または点のセット、平面の交点がセグメントにも属しているかどうかを試すことができます。より効率的な方法があるかもしれませんが、簡単な方法は、一般的な線で得られる交差結果にセグメントが含まれているかどうかを確認するためのチェックを追加することです。

于 2012-02-24T00:35:17.347 に答える