||I also really enjoyed reading this!
However, I didn't quite understand the following and I think it is a very important point:
"In this case, the three types of events are: start of a horizontal line, end of a horizontal line, and a vertical line. As the sweep line moves, we'll keep an active set of horizontal lines cut by the sweep line, sorted by Y value (the red lines in the figure)."
So how exactly do you move the sweep line? I don't see any way of moving it continuously. If you move it in discrete steps then you might accidently skip events. If you make the discrete steps too small then the sweep will take too long. What am I missing here?