2つの線分が交差するかどうかを決定します

2つの線分が厳密に交差されたときに、2つのセグメントと、唯一の共通点、この点はラインの任意のエンドポイントではありません。

そのエンドポイントは、ラインが厳密ではなく、厳密な交差記事の交差点交差しないよう(彼らはアルゴリズムでは非常に異なっていなくても)のみ厳格な交差点で議論し、議論していない使用することができます。

迅速な除去ストラドルと2つの実験方法を試し2つの線分が交差するかどうかを決定する際に、私たちはしばしば、迅速な拒絶反応の実験は、ドロップされたセグメントをすぐに除外することができ交差していないが、セグメントのための法律の必要十分条件になっていませんでした交差実験の急速な拒絶反応が完全に接続ストラドルすることができるであろう後、実験は、2つの線分が交差するかどうかを決定するために、この実験を跨ぐする唯一の方法は、実際には、ラインの交差を決定するために必要かつ十分な条件として使用することができます。

1.高速除外実験:
ここに画像を挿入説明

線分P1と仮定すると、P2は、R用の矩形の対角であり、その後Q1、矩形としてQ2のTの対角、二つの長方形2つの線分が交差確かに交差する、すなわち、線分が交差していないない必要条件に矩形が交差しています。

座標P1(P1X、P1Y)、P2の座標(P2X、P2Y)、Q1の座標(Q1X、Q1Y)、Q2の座標(Q2X、Q2Y)。

その長方形交差条件は次のとおりです。

分(P1X、P2X)<= MAX(Q1X、Q2X)&&
分(Q1X、Q2X)<= MAX(P1X、P2X)&&
分(P1Y、P2Y)<= MAX(Q1Y、Q2Y)&&
分(Q1Y、Q2Y )<= MAX(P1Y、P2Y)。

限りプログラミング分で書かれたように(INT BをINT)maxがこの2つの関数、上記条件(INT B、INT)、次に()ステートメントは、最初のセグメントが全く交差する可能性を有していない特定することができる場合に置きます。

(1)急速拒絶実験は
線分Q1Q2対角矩形Tで提供される、対角線P1P2矩形Rに設けられ、RおよびTは明らかに、そうでない場合は二つのセグメントが交差互いに素です。
(2)実験にまたがる
2つの線分が交差する場合、2つのセグメントが必ずしも相互にまたがります。及び(P2 - Q1)は(Q2 - Q1)ベクターに位置する両側に、即ち(P1 - Q1)×(Q2 - Q1Q2の鞍P1P2、ベクトル(Q1 P1)場合 - Q1)*(P2 - Q1)×( Q2 - Q1)<0。×(Q2 -それは、式(Q1 P1)のように書き換えることができる - Q1)*(Q2 - Q1)×(P2 - Q1)> 0。(P1 - Q1)場合×(Q2 - Q1)= 0 -及び(Q2 - Q1)、その(Q1 P1)を示す共線を、しかしQ1Q2の特定の線分P1には、フラッシュ排除試験であったように、同様に、 (Q2 - Q1)×(P2 - Q1)= 0は、 線分P2のQ1Q2上に記載されなければなりません。これはP1P2を跨ぐ基づいQ1Q2を判断されている:( P1 - Q1)×(Q2 - Q1)*(Q2 - Q1)×(P2 - Q1)> = 0。P1)×(P2 -同様Q1Q2跨っ決意はP1P2 :( Q1基づいている - P1)*(P2 - P1)×(Q2 - P1)> = 0。

https://dev.gameres.com/Program/Abstract/Geometry.htm#ベクトルの外積

公開された52元の記事 ウォンの賞賛2 ビュー894

おすすめ

転載: blog.csdn.net/qq_44714572/article/details/97759038