\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.8 - 2D Boolean Operations on Nef Polygons Embedded on the Sphere

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
CGAL::Nef_polyhedron_S2< Traits >::Sphere_segment Class Reference
2D Boolean Operations on Nef Polygons Embedded on the Sphere Reference

`#include <CGAL/Nef_polyhedron_S2.h>`

## 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 \( 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 half-circle.
bool | is_long ()
| a segment is long iff it is longer than a half-circle.
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 half-circle, 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.

## Constructor & Destructor Documentation

template<typename Traits >

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.

Precondition
  `p1 != p2` and `p1 != p2.opposite()`.

template<typename Traits >

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

Precondition
  `p1` and `p2` are contained in `c`.

template<typename Traits >

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

Precondition
  `c1 != c2` as unoriented circles.