Loading web-font TeX/Math/Italic
 
CGAL 6.0.1 - dD Geometry Kernel
All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
Loading...
Searching...
No Matches
CGAL::Sphere_d< Kernel > Class Template Reference

#include <CGAL/Kernel_d/Sphere_d.h>

Definition

template<typename Kernel>
class CGAL::Sphere_d< Kernel >

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.
 

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

Operations

int dimension ()
 returns the dimension of the ambient space.
 
Point_d< Kernelpoint (int i)
 returns the ith defining point.
 
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.
 
Point_d< Kernelcenter ()
 returns the center of S.
 
FT squared_radius ()
 returns the squared radius of the sphere.
 
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.
 
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.
 
bool has_on_positive_side (const Point_d< Kernel > &p)
 returns S.oriented_side(p)==ON_POSITIVE_SIDE.
 
bool has_on_negative_side (const Point_d< Kernel > &p)
 returns S.oriented_side(p)==ON_NEGATIVE_SIDE.
 
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.
 
bool has_on_bounded_side (const Point_d< Kernel > &p)
 returns S.bounded_side(p)==ON_BOUNDED_SIDE.
 
bool has_on_unbounded_side (const Point_d< Kernel > &p)
 returns S.bounded_side(p)==ON_UNBOUNDED_SIDE.
 
Sphere_d< Kernelopposite ()
 returns the sphere with the same center and squared radius as S but with opposite orientation.
 
Sphere_d< Kerneloperator+ (const Vector_d< Kernel > &v)
 returns the sphere translated by v.
 

Constructor & Destructor Documentation

◆ Sphere_d()

template<typename Kernel >
template<class ForwardIterator >
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).

Precondition
A consists of d+1 d-dimensional points.
Template Parameters
ForwardIteratorhas Point_d<Kernel> as value type.

Member Function Documentation

◆ bounded_side()

template<typename Kernel >
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.

Precondition
S.dimension()==p.dimension().

◆ center()

template<typename Kernel >
Point_d< Kernel > CGAL::Sphere_d< Kernel >::center ( )

returns the center of S.

Precondition
S is legal.

◆ has_on_boundary()

template<typename Kernel >
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.

Precondition
S.dimension()==p.dimension().

◆ has_on_bounded_side()

template<typename Kernel >
bool CGAL::Sphere_d< Kernel >::has_on_bounded_side ( const Point_d< Kernel > &  p)

returns S.bounded_side(p)==ON_BOUNDED_SIDE.

Precondition
S.dimension()==p.dimension().

◆ has_on_negative_side()

template<typename Kernel >
bool CGAL::Sphere_d< Kernel >::has_on_negative_side ( const Point_d< Kernel > &  p)

returns S.oriented_side(p)==ON_NEGATIVE_SIDE.

Precondition
S.dimension()==p.dimension().

◆ has_on_positive_side()

template<typename Kernel >
bool CGAL::Sphere_d< Kernel >::has_on_positive_side ( const Point_d< Kernel > &  p)

returns S.oriented_side(p)==ON_POSITIVE_SIDE.

Precondition
S.dimension()==p.dimension().

◆ has_on_unbounded_side()

template<typename Kernel >
bool CGAL::Sphere_d< Kernel >::has_on_unbounded_side ( const Point_d< Kernel > &  p)

returns S.bounded_side(p)==ON_UNBOUNDED_SIDE.

Precondition
S.dimension()==p.dimension().

◆ is_legal()

template<typename Kernel >
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.

◆ operator+()

template<typename Kernel >
Sphere_d< Kernel > CGAL::Sphere_d< Kernel >::operator+ ( const Vector_d< Kernel > &  v)

returns the sphere translated by v.

Precondition
S.dimension()==v.dimension().

◆ oriented_side()

template<typename Kernel >
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.

Precondition
S.dimension()==p.dimension().

◆ point()

template<typename Kernel >
Point_d< Kernel > CGAL::Sphere_d< Kernel >::point ( int  i)

returns the ith defining point.

Precondition
0 \le i \le dim

◆ squared_radius()

template<typename Kernel >
FT CGAL::Sphere_d< Kernel >::squared_radius ( )

returns the squared radius of the sphere.

Precondition
S is legal.

Friends And Related Function Documentation

◆ weak_equality()

template<typename Kernel >
bool weak_equality ( const Sphere_d< Kernel > &  S1,
const Sphere_d< Kernel > &  S2 
)
related

Test for equality as unoriented spheres.

Precondition
S1.dimension()==S2.dimension().