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.

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.