CGAL 5.3 - dD Geometry Kernel
|
#include <CGAL/Kernel_d/Sphere_d.h>
An instance \( S\) of the data type Sphere_d
is an oriented sphere in some \( d\)-dimensional space.
A sphere is defined by \( d+1\) points (class Point_d<Kernel>
). We use \( A\) to denote the array of the defining points. A set \( A\) of defining points is legal if either the points are affinely independent or if the points are all equal. Only a legal set of points defines a sphere in the geometric sense and hence many operations on spheres require the set of defining points to be legal. The orientation of \( S\) is equal to the orientation of the defining points, i.e., orientation(A)
.
Implementation
Spheres are implemented by a vector of points as a handle type. All operations like creation, initialization, tests, input and output of a sphere \( s\) take time \( O(s.dimension()) \). dimension()
, point access take constant time. The center()
-operation takes time \( O(d^3)\) on its first call and constant time thereafter. The sidedness and orientation tests take time \( O(d^3)\). The space requirement for spheres is \( O(s.dimension())\) neglecting the storage room of the points.
Related Functions | |
(Note that these are not member functions.) | |
bool | weak_equality (const Sphere_d< Kernel > &S1, const Sphere_d< Kernel > &S2) |
Test for equality as unoriented spheres. More... | |
Types | |
typedef unspecified_type | LA |
the linear algebra layer. | |
typedef unspecified_type | point_iterator |
a read-only iterator for points defining the sphere. | |
Creation | |
Sphere_d () | |
introduces a variable S of type Sphere_d<Kernel> . | |
template<class ForwardIterator > | |
Sphere_d (int d, ForwardIterator first, ForwardIterator last) | |
introduces a variable S of type Sphere_d<Kernel> . More... | |
Operations | |
int | dimension () |
returns the dimension of the ambient space. | |
Point_d< Kernel > | point (int i) |
returns the \( i\)th defining point. More... | |
point_iterator | points_begin () |
returns an iterator pointing to the first defining point. | |
point_iterator | points_end () |
returns an iterator pointing beyond the last defining point. | |
bool | is_degenerate () |
returns true iff the defining points are not full dimensional. | |
bool | is_legal () |
returns true iff the set of defining points is legal. More... | |
Point_d< Kernel > | center () |
returns the center of S . More... | |
FT | squared_radius () |
returns the squared radius of the sphere. More... | |
Orientation | orientation () |
returns the orientation of S . | |
Oriented_side | oriented_side (const Point_d< Kernel > &p) |
returns either the constant ON_ORIENTED_BOUNDARY , ON_POSITIVE_SIDE , or ON_NEGATIVE_SIDE , iff p lies on the boundary, properly on the positive side, or properly on the negative side of sphere, resp. More... | |
Bounded_side | bounded_side (const Point_d< Kernel > &p) |
returns ON_BOUNDED_SIDE , ON_BOUNDARY , or ON_UNBOUNDED_SIDE iff p lies properly inside, on the boundary, or properly outside of sphere, resp. More... | |
bool | has_on_positive_side (const Point_d< Kernel > &p) |
returns S.oriented_side(p)==ON_POSITIVE_SIDE . More... | |
bool | has_on_negative_side (const Point_d< Kernel > &p) |
returns S.oriented_side(p)==ON_NEGATIVE_SIDE . More... | |
bool | has_on_boundary (const Point_d< Kernel > &p) |
returns S.oriented_side(p)==ON_ORIENTED_BOUNDARY , which is the same as S.bounded_side(p)==ON_BOUNDARY . More... | |
bool | has_on_bounded_side (const Point_d< Kernel > &p) |
returns S.bounded_side(p)==ON_BOUNDED_SIDE . More... | |
bool | has_on_unbounded_side (const Point_d< Kernel > &p) |
returns S.bounded_side(p)==ON_UNBOUNDED_SIDE . More... | |
Sphere_d< Kernel > | opposite () |
returns the sphere with the same center and squared radius as S but with opposite orientation. | |
Sphere_d< Kernel > | operator+ (const Vector_d< Kernel > &v) |
returns the sphere translated by v . More... | |
CGAL::Sphere_d< Kernel >::Sphere_d | ( | int | d, |
ForwardIterator | first, | ||
ForwardIterator | last | ||
) |
introduces a variable S
of type Sphere_d<Kernel>
.
S
is initialized to the sphere through the points in A = tuple [first,last)
.
ForwardIterator | has Point_d<Kernel> as value type. |
Bounded_side CGAL::Sphere_d< Kernel >::bounded_side | ( | const Point_d< Kernel > & | p | ) |
returns ON_BOUNDED_SIDE
, ON_BOUNDARY
, or ON_UNBOUNDED_SIDE
iff p lies properly inside, on the boundary, or properly outside of sphere, resp.
S.dimension()==p.dimension()
. Point_d<Kernel> CGAL::Sphere_d< Kernel >::center | ( | ) |
returns the center of S
.
S
is legal. bool CGAL::Sphere_d< Kernel >::has_on_boundary | ( | const Point_d< Kernel > & | p | ) |
returns S.oriented_side(p)==ON_ORIENTED_BOUNDARY
, which is the same as S.bounded_side(p)==ON_BOUNDARY
.
S.dimension()==p.dimension()
. bool CGAL::Sphere_d< Kernel >::has_on_bounded_side | ( | const Point_d< Kernel > & | p | ) |
returns S.bounded_side(p)==ON_BOUNDED_SIDE
.
S.dimension()==p.dimension()
. bool CGAL::Sphere_d< Kernel >::has_on_negative_side | ( | const Point_d< Kernel > & | p | ) |
returns S.oriented_side(p)==ON_NEGATIVE_SIDE
.
S.dimension()==p.dimension()
. bool CGAL::Sphere_d< Kernel >::has_on_positive_side | ( | const Point_d< Kernel > & | p | ) |
returns S.oriented_side(p)==ON_POSITIVE_SIDE
.
S.dimension()==p.dimension()
. bool CGAL::Sphere_d< Kernel >::has_on_unbounded_side | ( | const Point_d< Kernel > & | p | ) |
returns S.bounded_side(p)==ON_UNBOUNDED_SIDE
.
S.dimension()==p.dimension()
. bool CGAL::Sphere_d< Kernel >::is_legal | ( | ) |
returns true iff the set of defining points is legal.
A set of defining points is legal iff their orientation is non-zero or if they are all equal.
Sphere_d<Kernel> CGAL::Sphere_d< Kernel >::operator+ | ( | const Vector_d< Kernel > & | v | ) |
returns the sphere translated by v
.
S.dimension()==v.dimension()
. Oriented_side CGAL::Sphere_d< Kernel >::oriented_side | ( | const Point_d< Kernel > & | p | ) |
returns either the constant ON_ORIENTED_BOUNDARY
, ON_POSITIVE_SIDE
, or ON_NEGATIVE_SIDE
, iff p lies on the boundary, properly on the positive side, or properly on the negative side of sphere, resp.
S.dimension()==p.dimension()
. Point_d<Kernel> CGAL::Sphere_d< Kernel >::point | ( | int | i | ) |
returns the \( i\)th defining point.
FT CGAL::Sphere_d< Kernel >::squared_radius | ( | ) |
returns the squared radius of the sphere.
S
is legal.