[Algorithm] 円と線分の交差判定 « MISCELLANEUOS DATA STORAGE

[Algorithm] 円と線分の交差判定


円と有限線分の交差判定のアルゴリズムです。
実装はこちらのサイトを参考にしました。
  

線分ABの始点から終点に向かうベクトルを
v

、線分の短点から円の中心に向かうベクトルをそれぞれ
c、 b

 とします。 円の半径を r とすると、円と直線の交差する条件は以下のようになります。

 

(1)   v c < 0    かつ    c < 0    ならば交差

(2)   v c 0    のとき:

  (2-1)   v c > v 2    かつ    b <    ならば交差

  (2-2)   v c 0    かつ    c 2 - v c 2 v 2 < r 2    のとき:

    (2-2-1)   c > r    または    b > r    ならば交差

 
 
最後の (2-2-1) は、線分の両端が円の内部にある条件です。
前述のサイトには、この条件が含まれていなかったため追記しました。
 
 
※ この記事には MathML を使用しています。 Internet Explorer を使用している方は、MathPlayer、Chrome では MathML2CSS などをインストールする必要があるそうです。

コメントをどうぞ