Implementing:
1. The sweeping of curves to a container of disjoint-interior subcurves.
2. The sweeping of curves to a container of the arrangement (induced by the input curves) points.
Major functions:
1. sweep_curves_to_subcurves.
2. sweep_curves_to_points.
Major auxiliary function: update_subcurves. This function inserts to the subcurves
container non-intersecting subcurves on each event.
Implementing the sweeping of curves to a planar map.
Major function: sweep_curves_to_planar_map.
Major auxiliary function: update_subdivision. This function inserts to the planar map
non-intersecting subcurves on each event.
Includes basic types and common functions.
The basic types provided are:
1. Curve_node. A curve of the sweep line which consists the input curve and a list
of the intersection points along it.
2. Intersection_point_node. A point of the arrangement induced by the input curve.
Each such point holds all Curve_nodes enamating from it, ordered in a counrer
clockwise order.
3. less_xy. A binary predicate orders two points lexicographically by their xy values.
4. less_yx. A binar predicate orders two Curve nodes on the status line.
5. Event queue: The queue structure of the sweep line algorithm.
6. Status line: The status structure of the sweep line algorithm.
The basic functions provided are:
1. handle_one_event: Handle on event from the event queue.
2. handle_overlapping_curves: Handle overlapping curves on the status after handling an event.
3. check_status_neighbors_intersection: Check for new neighbors on the status line and create new
events if needed.