regina::NDiscSetTet Class Reference
[Normal Surfaces]

Represents a set of normal discs inside a single tetrahedron. More...

#include <ndisc.h>

Inheritance diagram for regina::NDiscSetTet:

regina::NDiscSetTetData< T >

List of all members.

Public Member Functions

 NDiscSetTet (const NNormalSurface &surface, unsigned long tetIndex)
 Creates a new set of normal discs corresponding to the discs of the given normal surface that lie within the given tetrahedron.
virtual ~NDiscSetTet ()
 Destroys this disc set.
unsigned long nDiscs (int type) const
 Determines the number of discs of the given type inside this tetrahedron.
unsigned long arcFromDisc (int arcFace, int arcVertex, int discType, unsigned long discNumber) const
 Determines which normal arc of a given type on a given face of this tetrahedron corresponds to the given normal disc.
void discFromArc (int arcFace, int arcVertex, unsigned long arcNumber, int &discType, unsigned long &discNumber) const
 Determines which normal disc in this tetrahedron meets the given normal arc on the given face.

Protected Attributes

unsigned long internalNDiscs [10]
 The number of discs of each type.


Detailed Description

Represents a set of normal discs inside a single tetrahedron.

The numbers of discs of each type are stored in this structure, so querying them is fast regardless of the underlying normal surface coordinate system used.

Warning:
This class converts the number of normal discs of a given type from NLargeInteger to unsigned long. See the precondition below.
Precondition:
The number of normal discs of a particular type in a particular tetrahedron can be represented by a long integer.

This class should only be used with embedded normal surfaces.

Todo:
Bug (long-term): Have some error flag so we can barf politely if the number of normal discs of a given type does not fit into an unsigned long. See how this affects NDiscSetTetData also.

Constructor & Destructor Documentation

regina::NDiscSetTet::NDiscSetTet ( const NNormalSurface surface,
unsigned long  tetIndex 
)

Creates a new set of normal discs corresponding to the discs of the given normal surface that lie within the given tetrahedron.

Parameters:
surface the normal surface whose discs we shall use.
tetIndex the index in the triangulation of the tetrahedron that our discs must lie in; this must be between 0 and tri.getNumberOfTetrahedra()-1 inclusive, where tri is the triangulation containing the given normal surface.

regina::NDiscSetTet::~NDiscSetTet (  )  [inline, virtual]

Destroys this disc set.


Member Function Documentation

unsigned long regina::NDiscSetTet::nDiscs ( int  type  )  const [inline]

Determines the number of discs of the given type inside this tetrahedron.

Parameters:
type the disc type to examine; this should be between 0 and 9 inclusive. Disc types are outlined in the NDiscSpec class notes.
Returns:
the number of discs of the given type inside this tetrahedron.

unsigned long regina::NDiscSetTet::arcFromDisc ( int  arcFace,
int  arcVertex,
int  discType,
unsigned long  discNumber 
) const

Determines which normal arc of a given type on a given face of this tetrahedron corresponds to the given normal disc.

Precondition:
The given normal disc actually meets a normal arc of the given type on the given face.
Parameters:
arcFace the face of this tetrahedron containing the normal arc (between 0 and 3 inclusive).
arcVertex the vertex of this tetrahedron about which the normal arc runs (between 0 and 3 inclusive); arcFace and arcVertex should not be the same.
discType the disc type of the given normal disc; this should be between 0 and 9 inclusive, as described in the NDiscSpec class notes.
discNumber indicates which normal disc of the given disc type is referred to (between 0 and nDiscs(discType)-1 inclusive).
Returns:
the number of the normal arc of the given type that belongs to the given normal disc. Arcs of a given type (where arcFace and arcVertex together define the arc type) are numbered starting at 0 from the tetrahedron vertex outwards.

void regina::NDiscSetTet::discFromArc ( int  arcFace,
int  arcVertex,
unsigned long  arcNumber,
int &  discType,
unsigned long &  discNumber 
) const

Determines which normal disc in this tetrahedron meets the given normal arc on the given face.

Precondition:
The given normal arc actually exists in the normal surface with which this NDiscSetTet object was created.
Parameters:
arcFace the face of this tetrahedron containing the normal arc (between 0 and 3 inclusive).
arcVertex the vertex of this tetrahedron about which the normal arc runs (between 0 and 3 inclusive); arcFace and arcVertex should not be the same.
arcNumber indicates which normal arc of the given type is referred to. Arcs of a given type (where arcFace and arcVertex together define the arc type) are numbered starting at 0 from the tetrahedron vertex outwards.
discType returns the disc type of the normal disc that meets the given normal arc; this will be between 0 and 9 inclusive, as described in the NDiscSpec class notes. Any value may be initially passed.
discNumber returns a number that indicates which normal disc of the returned disc type (discType) meets the given normal arc; this will be between 0 and nDiscs(discType)-1 inclusive. Any value may be initially passed.


Member Data Documentation

unsigned long regina::NDiscSetTet::internalNDiscs[10] [protected]

The number of discs of each type.


The documentation for this class was generated from the following file:

Copyright © 1999-2008, Ben Burton
This software is released under the GNU General Public License.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@debian.org).