~ubuntu-branches/ubuntu/vivid/regina-normal/vivid-proposed

« back to all changes in this revision

Viewing changes to engine/triangulation/nface.h

  • Committer: Package Import Robot
  • Author(s): Ben Burton
  • Date: 2011-09-10 07:17:25 UTC
  • mfrom: (1.2.4 upstream)
  • Revision ID: package-import@ubuntu.com-20110910071725-97n90tywdq60w2cr
Tags: 4.90-1
* New upstream release!
* The user interface has been ported from KDE3 to KDE4 (closes: #556318).
  Re-enabled the GUI as a result.
* The build system has been ported from autotools to cmake.
* The new upstream release builds fine on amd64 (closes: #624882).
* Moved the users' handbook into regina-normal-doc.
* Upgraded several suggests/recommends.  Upgraded regina-normal-mpi to
  depend on mpi-default-bin, and regina-normal to depend on both graphviz
  and regina-normal-doc (which the GUI expends to be present).  Upgraded
  regina-normal to recommend gap.
* Bumped standards-version to 3.9.2.0 (no changes required).

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
 *  Regina - A Normal Surface Theory Calculator                           *
5
5
 *  Computational Engine                                                  *
6
6
 *                                                                        *
7
 
 *  Copyright (c) 1999-2009, Ben Burton                                   *
 
7
 *  Copyright (c) 1999-2011, Ben Burton                                   *
8
8
 *  For further details contact Ben Burton (bab@debian.org).              *
9
9
 *                                                                        *
10
10
 *  This program is free software; you can redistribute it and/or         *
26
26
 
27
27
/* end stub */
28
28
 
29
 
/*! \file nface.h
 
29
/*! \file triangulation/nface.h
30
30
 *  \brief Deals with faces in a triangulation.
31
31
 */
32
32
 
35
35
#define __NFACE_H
36
36
#endif
37
37
 
 
38
#include "regina-core.h"
38
39
#include "shareableobject.h"
39
 
#include "triangulation/nperm.h"
40
 
#include "triangulation/ntetrahedron.h"
 
40
#include "maths/nperm4.h"
 
41
#include "utilities/nmarkedvector.h"
 
42
// NOTE: More #includes follow after the class declarations.
41
43
 
42
44
namespace regina {
43
45
 
 
46
class NBoundaryComponent;
44
47
class NComponent;
45
 
class NBoundaryComponent;
 
48
class NEdge;
 
49
class NTetrahedron;
 
50
class NVertex;
46
51
 
47
52
/**
48
53
 * \weakgroup triangulation
53
58
 * Details how a face in the skeleton forms part of an individual
54
59
 * tetrahedron.
55
60
 */
56
 
class NFaceEmbedding {
 
61
class REGINA_API NFaceEmbedding {
57
62
    private:
58
63
        NTetrahedron* tetrahedron;
59
64
            /**< The tetrahedron in which this face is contained. */
101
106
         * @return a mapping from the vertices of this face to the
102
107
         * vertices of getTetrahedron().
103
108
         */
104
 
        NPerm getVertices() const;
 
109
        NPerm4 getVertices() const;
105
110
};
106
111
 
107
112
/**
109
114
 * Faces are highly temporary; once a triangulation changes, all its
110
115
 * face objects will be deleted and new ones will be created.
111
116
 */
112
 
class NFace : public ShareableObject, public NMarkedElement {
 
117
class REGINA_API NFace : public ShareableObject, public NMarkedElement {
113
118
    public:
114
119
        static const int TRIANGLE;
115
120
            /**< Specifies a face with no identified vertices or edges. */
151
156
         * This lookup table replaces the deprecated routine
152
157
         * regina::faceOrdering().
153
158
         */
154
 
        static const NPerm ordering[4];
 
159
        static const NPerm4 ordering[4];
155
160
 
156
161
    private:
157
162
        NFaceEmbedding* embeddings[2];
316
321
         * @return a mapping from vertices (0,1) of the requested edge to
317
322
         * the vertices of this face.
318
323
         */
319
 
        NPerm getEdgeMapping(int edge) const;
 
324
        NPerm4 getEdgeMapping(int edge) const;
320
325
 
321
326
        void writeTextShort(std::ostream& out) const;
322
327
 
336
341
 
337
342
/*@}*/
338
343
 
 
344
} // namespace regina
 
345
// Some more headers that are required for inline functions:
 
346
#include "triangulation/ntetrahedron.h"
 
347
namespace regina {
 
348
 
339
349
// Inline functions for NFace
340
350
 
341
351
inline NFace::NFace(NComponent* myComponent) : nEmbeddings(0),
409
419
    return face;
410
420
}
411
421
 
412
 
inline NPerm NFaceEmbedding::getVertices() const {
 
422
inline NPerm4 NFaceEmbedding::getVertices() const {
413
423
    return tetrahedron->getFaceMapping(face);
414
424
}
415
425