Table of Contents
Motivation
At the time of writing this,
, I had set myself the task of implementing line-polygon clipping for my new plotter art framework but found that my Internet connection didn't work.As a challenge, I set out to come up with a solution myself. In any case, it will be useful to have this information written down for the next time I need it.
Line-Line Intersection
A basic fact of Euclidean Geometry is that two lines (extended infinitely) are either parallel or will intersect in some point.
Consider two lines and defined by their start and end points.
This gives rise to parametric equations which for define the points on each line.
We're looking for such that .
Solving once for and once for :
Combining
For cosmetic reasons, we can reorder this so comes before and smaller indices before larger ones.
If the lines are parallel, the denominator will be zero and there are either no or infinitely many intersection points.
To make sure the intersection point lies inside both lines, we'll need to calculate too.
If both , we know the intersection point is part of both lines.
Test Image
Each time I implement a new feature, I like to create some minimum viable image that would not have been possible before.