Intersection of Line Segments (from CGA FAQ)


Intersection of two line segments
involves the following cases:

  • Segments are parallel
  • Segments are collinear/coincident
  • One segment intersects the extension of the other
  • Extension of one segment intersects the extension of the other
  • Segments intersect each other.

Intersection of Two Line Segments

The details of the solution can be found in the CGA FAQ linked above. A C++ implementation can be found here: http://code.google.com/p/curve-project/source/browse/trunk/lab/cgafaq/cgafaq.h The function cgafaq::intersect takes 4 points — the start and end points of each of the lines. r and s are output parameters calculated as described in the FAQ.

Disclaimer: This post and the code provided are not endorsed by any of the contributors to the CGA FAQ.