# Hidden Surface Removal Algorithm

**Source code:**lines.cpp

Various universities present computer science students with a hidden surface removal problem;
perhaps better described as 2d occlusion culling. A variation of the problem may read something
like this:

*
We say a line is uppermost at a given x-coordinate if it's y-coordinate at x is greater than
all the other lines. Inuitively, a line is visible if at least some portion of it can be seen
if you look down from y = ∞. You can assume that there are no points where three or more lines
intersect, there are no vertical lines, and no two lines are parallel.
*

The optimal solution is an O(n log n) divide and conquer algorithm. My specific implementation uses a Line structure that tracks the range over x which its visible. If a line's interval completely overlaps another line, then the other line cannot be visible.