regina::NDiscSetSurface Class Reference
[Normal Surfaces]

Represents the set of all normal discs forming a normal surface. More...

#include <ndisc.h>

Inheritance diagram for regina::NDiscSetSurface:

regina::NDiscSetSurfaceData< T >

List of all members.

Public Member Functions

 NDiscSetSurface (const NNormalSurface &surface)
 Creates a new disc set corresponding to the discs of the given normal surface.
virtual ~NDiscSetSurface ()
 Destroys this set of discs and deallocates all associated memory.
unsigned long nTets () const
 Returns the number of tetrahedra in the underlying triangulation.
unsigned long nDiscs (unsigned long tetIndex, int type) const
 Determines the number of discs of the given type inside the given tetrahedron.
NDiscSetTettetDiscs (unsigned long tetIndex) const
 Returns the specific set of discs living inside the given tetrahedron.
NDiscSpecadjacentDisc (const NDiscSpec &disc, NPerm arc, NPerm &adjArc) const
 Determines which normal disc is adjacent to the given normal disc along the given directed normal arc in the surface described by this disc set.

Protected Member Functions

 NDiscSetSurface (const NNormalSurface &surface, bool b)
 Creates a new disc set corresponding to the discs of the given normal surface.

Protected Attributes

NDiscSetTet ** discSets
 The disc sets corresponding to each tetrahedron.
NTriangulationtriangulation
 The triangulation in which the normal surface lives.


Detailed Description

Represents the set of all normal discs forming a normal surface.

These are stored as an array of NDiscSetTet objects, one for each tetrahedron.

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.


Constructor & Destructor Documentation

regina::NDiscSetSurface::NDiscSetSurface ( const NNormalSurface surface,
bool  b 
) [protected]

Creates a new disc set corresponding to the discs of the given normal surface.

The array of tetrahedron disc set pointers will be created but the NDiscSetTet objects themselves will not be created.

This constructor should be called from constructors of subclasses who wish to use objects of a subclass of NDiscSetTet, which this constructor allows them to create for themselves.

Warning:
After calling this constructor, each NDiscSetTet object in the discSets array must be created, since the NDiscSetSurface destructor will attempt to destroy them! The discSets array will have size surface.getTriangulation()->getNumberOfTetrahedra().
Parameters:
surface the normal surface whose discs we shall use.
b this parameter is ignored.

regina::NDiscSetSurface::NDiscSetSurface ( const NNormalSurface surface  ) 

Creates a new disc set corresponding to the discs of the given normal surface.

Parameters:
surface the normal surface whose discs we shall use.

virtual regina::NDiscSetSurface::~NDiscSetSurface (  )  [virtual]

Destroys this set of discs and deallocates all associated memory.


Member Function Documentation

NDiscSpec* regina::NDiscSetSurface::adjacentDisc ( const NDiscSpec disc,
NPerm  arc,
NPerm adjArc 
) const

Determines which normal disc is adjacent to the given normal disc along the given directed normal arc in the surface described by this disc set.

A directed normal arc will be specified by a permutation p, where the arc runs around vertex p[0] parallel to the directed edge from vertex p[1] to p[2].

Parameters:
disc the given normal disc; this must be a disc in this disc set.
arc the given normal arc; this must actually be an arc on the boundary of the given normal disc (although it may run in either direction).
adjArc returns the same directed normal arc that was passed, but expressed in terms of the vertices of the adjacent tetrahedron. Any value may be initially passed. If there is no adjacent disc/tetrahedron, this permutation will remain unchanged.
Returns:
the normal disc adjacent to the given disc along the given arc, or 0 if there is no adjacent disc. This disc specifier will be newly created, and it is up to the caller of this routine to dispose of it.

unsigned long regina::NDiscSetSurface::nDiscs ( unsigned long  tetIndex,
int  type 
) const [inline]

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

Parameters:
tetIndex the index in the triangulation of the tetrahedron to examine.
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 the given tetrahedron.

unsigned long regina::NDiscSetSurface::nTets (  )  const [inline]

Returns the number of tetrahedra in the underlying triangulation.

Returns:
the number of tetrahedra.

NDiscSetTet & regina::NDiscSetSurface::tetDiscs ( unsigned long  tetIndex  )  const [inline]

Returns the specific set of discs living inside the given tetrahedron.

Parameters:
tetIndex the index in the triangulation of the given tetrahedron.
Returns:
the set of discs inside the given tetrahedron.


Member Data Documentation

The disc sets corresponding to each tetrahedron.

The triangulation in which the normal surface lives.


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