106
106
NTetrahedron* tetrahedra[4];
107
107
/**< Stores the tetrahedra glued to each face of this
108
108
tetrahedron. Specifically, <tt>tetrahedra[f]</tt>
109
represents the tetrahedron joined to face \c f
109
represents the tetrahedron joined to triangular face \c f
110
110
of this tetrahedron, or is 0
111
111
if face \c f lies on the triangulation boundary. Faces are
112
112
numbered from 0 to 3 inclusive, where face \c i is opposite
129
129
/**< Edges in the triangulation skeleton that are
130
130
edges of this tetrahedron. */
132
/**< Faces in the triangulation skeleton that are
131
NTriangle* triangles[4];
132
/**< Triangles in the triangulation skeleton that are
133
133
faces of this tetrahedron. */
135
135
int tmpOrientation[4];
136
136
/**< Temporary array used to represent orientations
137
of faces and vertex link triangles when calculating
137
of triangles and vertex link triangles when calculating
138
138
orientability of boundary components and vertex links.
139
139
Each orientation will be +/-1.
140
140
The array should only be used within these
148
148
/**< Maps (0,1) to the vertices of this tetrahedron that form
149
149
each edge whilst mapping (2,3) in a suitably "orientation-
150
150
preserving" way, as described in getEdgeMapping(). */
151
NPerm4 faceMapping[4];
151
NPerm4 triMapping[4];
152
152
/**< Maps (0,1,2) to the vertices of this tetrahedron that form
153
each face, as described in getFaceMapping(). */
153
each triangular face, as described in getTriangleMapping(). */
154
154
int tetOrientation;
155
155
/**< The orientation of this tetrahedron in the triangulation.
156
156
This will either be 1 or -1. */
468
468
NEdge* getEdge(int edge) const;
470
* Returns the face in the triangulation skeleton
470
* Returns the triangle in the triangulation skeleton
471
471
* corresponding to the given face of this tetrahedron.
473
473
* As of Regina 4.90, if the skeletal information for the
482
482
* @param face the face of this tetrahedron to examine.
483
483
* This should be between 0 and 3 inclusive, where face \c i
484
484
* lies opposite vertex \c i.
485
* @return the face of the skeleton corresponding to the
486
* requested tetrahedron face.
488
NFace* getFace(int face) const;
485
* @return the triangle of the skeleton corresponding to the
486
* requested tetrahedron face.
488
NTriangle* getTriangle(int face) const;
490
* A deprecated alias for getTriangle().
492
* This routine returns the triangle in the triangulation
493
* skeleton corresponding to the given face of this tetrahedron.
494
* See getTriangle() for further details.
496
* \deprecated This routine will be removed in a future version
497
* of Regina. Please use getTriangle() instead.
499
* @param face the face of this tetrahedron to examine.
500
* This should be between 0 and 3 inclusive, where face \c i
501
* lies opposite vertex \c i.
502
* @return the triangle of the skeleton corresponding to the
503
* requested tetrahedron face.
505
NTriangle* getFace(int face) const;
490
507
* Returns a permutation that maps 0 to the given vertex of this
491
508
* tetrahedron, and that maps (1,2,3) to the three remaining vertices
579
596
* Examines the given face of this tetrahedron, and returns a
580
597
* mapping from the "canonical" vertices of the corresponding
581
* face of the triangulation to the matching vertices of this
598
* triangle of the triangulation to the matching vertices of this
584
601
* In detail: Suppose two faces of two tetrahedra are identified
585
602
* within the overall triangulation. We call this a single
586
* "face of the triangulation", and arbitrarily label its
603
* "triangle of the triangulation", and arbitrarily label its
587
604
* vertices (0,1,2). This routine then maps the vertices
588
* (0,1,2) of this face of the triangulation to the individual
605
* (0,1,2) of this triangle of the triangulation to the individual
589
606
* vertices of this tetrahedron that make up the given face.
591
608
* Because we are passing the argument \a face, we already know
593
610
* routine tells us is the \a order in which they appear to form the
594
611
* overall face of the triangulation.
596
* As a consequence: Consider some pair of tetrahedron faces
597
* that are identified together as a single face of the triangulation,
613
* As a consequence: Consider some pair of tetrahedron faces that are
614
* identified together as a single triangle of the triangulation,
598
615
* and choose some \a i from the set {0,1,2}. Then the vertices
599
* <tt>getFaceMapping(...)[i]</tt> of the individual tetrahedra
616
* <tt>getTriangleMapping(...)[i]</tt> of the individual tetrahedra
600
617
* are identified together, since they both become the same
601
* vertex of the same face of the triangulation (assuming of
618
* vertex of the same triangle of the triangulation (assuming of
602
619
* course that we pass the correct face number in each case to
620
* getTriangleMapping()).
605
622
* As of Regina 4.90, if the skeletal information for the
606
623
* triangulation has not been computed then this will be done
614
631
* @param face the face of this tetrahedron to examine.
615
632
* This should be between 0 and 3 inclusive.
616
* @return a mapping from vertices (0,1,2) of the requested face
617
* to the vertices of this tetrahedron.
633
* @return a mapping from vertices (0,1,2) of the corresponding
634
* triangle to the vertices of this tetrahedron.
636
NPerm4 getTriangleMapping(int face) const;
638
* A deprecated alias for getTriangleMapping().
640
* This routine examines the given face of this tetrahedron, and
641
* returns a mapping from the "canonical" vertices of the corresponding
642
* triangle of the triangulation to the matching vertices of this
643
* tetrahedron. See getTriangleMapping() for further details.
645
* \deprecated This routine will be removed in a future version
646
* of Regina. Please use getTriangleMapping() instead.
648
* @param face the face of this tetrahedron to examine.
649
* This should be between 0 and 3 inclusive.
650
* @return a mapping from vertices (0,1,2) of the corresponding
651
* triangle to the vertices of this tetrahedron.
619
653
NPerm4 getFaceMapping(int face) const;
725
760
return edges[edge];
728
inline NFace* NTetrahedron::getFace(int face) const {
763
inline NTriangle* NTetrahedron::getTriangle(int face) const {
729
764
if (! tri->calculatedSkeleton)
730
765
tri->calculateSkeleton();
766
return triangles[face];
769
inline NTriangle* NTetrahedron::getFace(int face) const {
770
return getTriangle(face);
734
773
inline NPerm4 NTetrahedron::getVertexMapping(int vertex) const {
743
782
return edgeMapping[edge];
785
inline NPerm4 NTetrahedron::getTriangleMapping(int face) const {
786
if (! tri->calculatedSkeleton)
787
tri->calculateSkeleton();
788
return triMapping[face];
746
791
inline NPerm4 NTetrahedron::getFaceMapping(int face) const {
747
if (! tri->calculatedSkeleton)
748
tri->calculateSkeleton();
749
return faceMapping[face];
792
return getTriangleMapping(face);
752
795
inline int NTetrahedron::orientation() const {