0 1 2 4 3 edge 0 edge 3 edge 1 edge 2 Edge 0 added! Edge lastPoint edge 0 0 Edge 1 added! Edge lastPoint edge 0 0 edge 1 0 Edge 0 to remove! Edge lastPoint edge 0 0 edge 1 0 Draw edge frompoint 0 to 1 Edge lastPoint edge 0 1 edge 1 0 x Edge lastPoint edge 1 0 Edge 2 to add! Edge lastPoint edge 1 0 edge 2 1 Sweepline at point 0 Sweepline at point 1 Sweepline at point 2 Edge 1 and 2 intersect! Edge lastPoint edge 1 0 edge 2 1 Draw edge frompoint 1 to 2 Draw edge frompoint 0 to 2 Edge lastPoint edge 1 2 edge 2 2 Sweepline at point 3 Edge 1 to remove! Edge lastPoint edge 1 2 edge 2 2 Draw edge frompoint 2 to 3 Edge lastPoint edge 1 3 edge 2 2 x Edge lastPoint edge 2 2 Edge 3 to add! Edge lastPoint edge 2 2 edge 3 3 Sweepline at point 4 Edge 2 to remove! Edge lastPoint edge 2 2 edge 3 3 Draw edge frompoint 2 to 4 Edge lastPoint edge 2 4 edge 3 3 x Edge lastPoint edge 3 3 Edge 3 to remove! Edge lastPoint edge 3 3 Edge lastPoint edge 3 4 x Note that while drawing, you do: drawEdge(oldPoint, newPoint) if the edge is top to bottom or horizontal (left to right), otherwise, you'd do: drawEdge(newPoint, oldPoint). This is to ensure, the directions remain same