Represents a set of normal discs inside a single tetrahedron.
More...
#include <surface/disc.h>
|
| DiscSetTet (const NormalSurface &surface, size_t tetIndex) |
| Creates a new set of normal discs corresponding to the discs of the given normal surface that lie within the given tetrahedron. More...
|
|
| DiscSetTet (unsigned long tri0, unsigned long tri1, unsigned long tri2, unsigned long tri3, unsigned long quad0, unsigned long quad1, unsigned long quad2, unsigned long oct0=0, unsigned long oct1=0, unsigned long oct2=0) |
| Creates a new set of normal discs where the number of discs of each type is explicitly given. More...
|
|
| DiscSetTet (const DiscSetTet &src)=default |
| Creates a new copy of the given set of normal discs. More...
|
|
DiscSetTet & | operator= (const DiscSetTet &src)=default |
| Sets this to be a copy of the given set of normal discs. More...
|
|
bool | operator== (const DiscSetTet &other) const |
| Determines whether this and the given set have the same number of discs of each type. More...
|
|
bool | operator!= (const DiscSetTet &other) const |
| Determines whether this and the given set do not have the same number of discs of each type. More...
|
|
unsigned long | nDiscs (int type) const |
| Determines the number of discs of the given type inside this tetrahedron. More...
|
|
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. More...
|
|
std::pair< int, unsigned long > | discFromArc (int arcFace, int arcVertex, unsigned long arcNumber) const |
| Determines which normal disc in this tetrahedron meets the given normal arc on the given face. More...
|
|
|
unsigned long | discs_ [10] |
| The number of discs of each type. More...
|
|
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.
These objects are small enough to pass by value and swap with std::swap(), with no need for any specialised move operations or swap functions.
- Warning
- This class converts the number of normal discs of a given type from LargeInteger 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 DiscSetTetData also.
◆ Data
A null type alias, for consistency with DiscSetTetData.
This type alias is purely to help avoid compile errors in templated code. Since the DiscSetTet class does not actually hold any data for each normal disc, this type alias should normally not be used.
◆ DiscSetTet() [1/3]
regina::DiscSetTet::DiscSetTet |
( |
const NormalSurface & |
surface, |
|
|
size_t |
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.size()-1 inclusive, where tri is the triangulation containing the given normal surface. |
◆ DiscSetTet() [2/3]
regina::DiscSetTet::DiscSetTet |
( |
unsigned long |
tri0, |
|
|
unsigned long |
tri1, |
|
|
unsigned long |
tri2, |
|
|
unsigned long |
tri3, |
|
|
unsigned long |
quad0, |
|
|
unsigned long |
quad1, |
|
|
unsigned long |
quad2, |
|
|
unsigned long |
oct0 = 0 , |
|
|
unsigned long |
oct1 = 0 , |
|
|
unsigned long |
oct2 = 0 |
|
) |
| |
|
inline |
Creates a new set of normal discs where the number of discs of each type is explicitly given.
- Parameters
-
tri0 | the number of triangular discs surrounding vertex 0. |
tri1 | the number of triangular discs surrounding vertex 1. |
tri2 | the number of triangular discs surrounding vertex 2. |
tri3 | the number of triangular discs surrounding vertex 3. |
quad0 | the number of quadrilateral discs of type 0. |
quad1 | the number of quadrilateral discs of type 1. |
quad2 | the number of quadrilateral discs of type 2. |
oct0 | the number of octahedral discs of type 0. |
oct1 | the number of octahedral discs of type 1. |
oct2 | the number of octahedral discs of type 2. |
◆ DiscSetTet() [3/3]
regina::DiscSetTet::DiscSetTet |
( |
const DiscSetTet & |
src | ) |
|
|
default |
Creates a new copy of the given set of normal discs.
- Parameters
-
◆ arcFromDisc()
unsigned long regina::DiscSetTet::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 DiscSpec 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.
◆ discFromArc()
std::pair< int, unsigned long > regina::DiscSetTet::discFromArc |
( |
int |
arcFace, |
|
|
int |
arcVertex, |
|
|
unsigned long |
arcNumber |
|
) |
| 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 DiscSetTet 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. |
- Returns
- a pair (discType, discNumber), where discType gives the disc type of the normal disc that meets the given normal arc (between 0 and 9 inclusive), and discNumber indicates which normal disc of the returned disc type (
discType
) meets the given normal arc (between 0 and nDiscs(discType)-1
inclusive).
◆ nDiscs()
unsigned long regina::DiscSetTet::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 DiscSpec class notes |
- Returns
- the number of discs of the given type inside this tetrahedron.
◆ operator!=()
bool regina::DiscSetTet::operator!= |
( |
const DiscSetTet & |
other | ) |
const |
|
inline |
Determines whether this and the given set do not have the same number of discs of each type.
This routine does not consider whether the two underlying tetrahedra are the same; it merely compares the ten disc counts in each set.
- Returns
true
if and only if both sets are not the same, as described above.
◆ operator=()
Sets this to be a copy of the given set of normal discs.
- Parameters
-
- Returns
- a reference to this disc set.
◆ operator==()
bool regina::DiscSetTet::operator== |
( |
const DiscSetTet & |
other | ) |
const |
|
inline |
Determines whether this and the given set have the same number of discs of each type.
This routine does not consider whether the two underlying tetrahedra are the same; it merely compares the ten disc counts in each set.
- Returns
true
if and only if both sets are the same, as described above.
◆ discs_
unsigned long regina::DiscSetTet::discs_[10] |
|
protected |
The number of discs of each type.
The documentation for this class was generated from the following file: