## CGAL::Nef_polyhedron_S2<Traits>::Sphere_segment

### Definition

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 S2. 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

Nef_polyhedron_S2<Traits>::Sphere_segment s;
| creates some sphere segment.

Nef_polyhedron_S2<Traits>::Sphere_segment s ( | Sphere_point p1, 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. Precondition: p1 != p2 and p1 != p2.opposite().

Nef_polyhedron_S2<Traits>::Sphere_segment s ( | Sphere_point p1, Sphere_point p2, 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.) Precondition: p1 and p2 are contained in c.

Nef_polyhedron_S2<Traits>::Sphere_segment s ( | Sphere_circle c1, Sphere_circle c2);

| creates the spherical segment as part of c1 that is part of the halfsphere left of the oriented circle c2. Precondition: c1 != c2 as unoriented circles.

### Operations

Sphere_point | s.source () | the source point of s.
Sphere_point | s.target () | the target point of s.
Sphere_circle | s.sphere_circle () | the great circle supporting s.
Sphere_segment | s.opposite () | returns the sperical segment oriented from target() to source() with the same point set as s.
Sphere_segment | s.complement () | returns the sperical segment oriented from target() to source() with the point set completing s to a full circle.
bool | s.is_short () | a segment is short iff it is shorter than a half-circle.
bool | s.is_long () | a segment is long iff it is longer than a half-circle.
bool | s.is_degenerate () | return true iff s is degenerate, i.e. source and target are the same.
bool | s.is_halfcircle () | return true iff s is a perfect half-circle, i.e. source().antipode == target().
bool | s.has_on ( Sphere_point p)
|  | return true iff s contains p.
bool | s.has_in_relative_interior ( Sphere_point p)
|  | return true iff s contains p in its relative interior.