図形間の相互関係2

Powered by MathJax

複数の図形間の相互関係をベクトル演算によって解析しよう.

今回は,板書中心です.

二線分の交差判定

線分 \( \Pt{AB} \) と \( \Pt{CD} \) とが交差しているか?


(a) 交差
  
(b) 無交差
Fig.1. 二線分の例

Fig.1 (a) は交差している場合の例, 同 (b) は交差してしていない場合の例である. 人間なら一目瞭然ではあるが... それをコンピュータに判断させるには?

線分 \( \Pt{AB} \) から見て点 \( \Pt{C} \) と \( \Pt{D} \) とが左右どちら側にあるか? また,線分 \( \Pt{CD} \) から見て点 \( \Pt{A} \) と \( \Pt{B} \) とが左右どちら側にあるか?
正確に判定するには,2〜4回の外積演算が必要となり,計算コストが高い.
無交差のラフな除外

多数の線分間の交差を判定する際, 非交差なペアが多く,計算コストを無駄に費やしてしまうことになるだろう. 明らかに交差しない場合を低コストな前処理として判定・除外しておけば, 正確だが高コストな交差判定の実行回数を,大抵は,大幅に削減できる.

BB や BS 同士が無交差ならば,当然,元の図形同士も無交差ですね. 正確な判定は不要.
BB や BS 同士が交差していても, 元の図形同士が必ずしも交差しているとは限りませんよ. この場合だけ,正確な判定が必要.
多角形に対する点の内外判定

多角形 \( \Pt{P_0 P_1 P_2 ... P}_{n-1} \) に対して, 指示点 \( \Pt P \) は内部/外部のどちらにあるか?