This traits is a refinement ot the arrangement segments traits,
adding an extra requirement,
in which it provides a function for computing the intersection point
of a vertical ray enamating from a given point, and a given segment.
The new traits provides a function for computing the intersection point
of a vertical ray enamating from a given point, and a given segment.
Now Holes_split does not have to know the types Ray and
does not have to do theis calculation by itself.
Now Map_overlay_2 is a Handle, in order to control the
memory destruction.\
Now it is possible to create an object
Map_overlay_2 ovl(pm1,pm2);
pm1,pm2 are two planar subdivisions.
The call to the converter (from pm1 to map overlay is done successfully),
And the created temporary object is not freed thanks to the ref count.
The main function gets as a parameter a planar map composed of one bounded face
with possibly many holes, and splits that face in the following manner:
We animate from the left vertex and the right vertex of each hole two vertical rays
going upward and downward.
We need to indicate each edge whether it is an original edge or a vertical spliting edge.
We also indicate for each face, whether it is a face associated with a hole.
We provide the following boolean operations on two polygons:
1. intersection.
2. union.
3. symmeteric diff
4. diff
the funcitons are templated with the polygon type and traits.
The CGAL polygon is a model of our polygon.
The traits is used for the sweep line algorithm.
Each function has three (optional) parameters representing the resulting features.
1. a list of points.
2. a list of segments.
3. a list of polygons.
The latter is a list of simple polygons (from the polygon type).
Hence if the we polygon with holes we split it to simple polygons.