CGAL 4.7  2D Boolean Operations on Nef Polygons Embedded on the Sphere

#include <CGAL/Nef_polyhedron_S2.h>
An object s
of type Sphere_segment
is a segment in the surface of a unit sphere that is part of a great circle trough the origin.
Sphere segments are represented by two sphere points \( p\) and \( q\) plus an oriented plane \( h\) that contains \( p\) and \( q\). The plane determines the sphere segment as follows. Let \( c\) be the circle in the intersection of \( h\) and \( S_2\). Then \( s\) is that part of \( c\) that is swept, when we rotate \( p\) into \( q\) in counterclockwise rotation around the normal vector of \( h\) as seen from the positive halfspace.
Creation  
Sphere_segment ()  
creates some sphere segment.  
Sphere_segment (const Sphere_point &p1, const Sphere_point &p2, bool shorter_arc=true)  
creates a spherical segment spanning the shorter arc from p1 to p2 if shorter_arc == true . More...  
Sphere_segment (const Sphere_point &p1, const Sphere_point &p2, const Sphere_circle &c)  
creates a spherical segment spanning the arc from p1 to p2 as part of the oriented circle c (p1 == p2 or p1 == p2.opposite() are possible.) More...  
Sphere_segment (const Sphere_circle &c1, const Sphere_circle &c2)  
creates the spherical segment as part of c1 that is part of the halfsphere left of the oriented circle c2 . More...  
Operations  
const Sphere_point &  source () 
the source point of s .  
const Sphere_point &  target () 
the target point of s .  
const Sphere_circle &  sphere_circle () 
the great circle supporting s .  
Sphere_segment  opposite () 
returns the sperical segment oriented from target() to source() with the same point set as s .  
Sphere_segment  complement () 
returns the sperical segment oriented from target() to source() with the point set completing s to a full circle.  
bool  is_short () 
a segment is short iff it is shorter than a halfcircle.  
bool  is_long () 
a segment is long iff it is longer than a halfcircle.  
bool  is_degenerate () 
return true iff s is degenerate, i.e. source and target are the same.  
bool  is_halfcircle () 
return true iff s is a perfect halfcircle, i.e. source().antipode == target() .  
bool  has_on (const Sphere_point &p) 
return true iff s contains p .  
bool  has_in_relative_interior (const Sphere_point &p) 
return true iff s contains p in its relative interior.  
CGAL::Nef_polyhedron_S2< Traits >::Sphere_segment::Sphere_segment  (  const Sphere_point &  p1, 
const Sphere_point &  p2,  
bool  shorter_arc = true 

) 
creates a spherical segment spanning the shorter arc from p1
to p2
if shorter_arc == true
.
Otherwise the longer arc is created.
p1 != p2
and p1 != p2.opposite()
. CGAL::Nef_polyhedron_S2< Traits >::Sphere_segment::Sphere_segment  (  const Sphere_point &  p1, 
const Sphere_point &  p2,  
const Sphere_circle &  c  
) 
creates a spherical segment spanning the arc from p1
to p2
as part of the oriented circle c
(p1 == p2
or p1 == p2.opposite()
are possible.)
p1
and p2
are contained in c
. CGAL::Nef_polyhedron_S2< Traits >::Sphere_segment::Sphere_segment  (  const Sphere_circle &  c1, 
const Sphere_circle &  c2  
) 
creates the spherical segment as part of c1
that is part of the halfsphere left of the oriented circle c2
.
c1 != c2
as unoriented circles.