線分同士の衝突判定

segment-segment-collision.png

まずは線分の載っているを使います。
線分を無限に伸ばしたものが線です。

線分の各点が、もう一方の線のどちら側にあるのか調べることによって線分同士の衝突判定をします。

線分が線のどちらか一方にしか存在しないかどうか判定する関数

bool isOneSide(const Line& line,const Segment& s){
   float distance1 = glm::dot(line.normal,s.begin);
   float distance2 = glm::dot(line.normal, s.end );
   return distance1 * distance2 > 0;
}

線の法線と点の内積をとると、点と線の距離を知ることができます。
Bibliography

segment

サポートサイト Wikidot.com segment