4
4
* Regina - A Normal Surface Theory Calculator *
7
* Copyright (c) 1999-2004, Ben Burton *
7
* Copyright (c) 1999-2006, Ben Burton *
8
8
* For further details contact Ben Burton (bab@debian.org). *
10
10
* This program is free software; you can redistribute it and/or *
20
20
* You should have received a copy of the GNU General Public *
21
21
* License along with this program; if not, write to the Free *
22
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
23
* MA 02111-1307, USA. *
22
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
23
* MA 02110-1301, USA. *
25
25
**************************************************************************/
29
29
#include <cppunit/extensions/HelperMacros.h>
30
30
#include "angle/nanglestructurelist.h"
31
#include "triangulation/nexampletriangulation.h"
31
32
#include "triangulation/ntriangulation.h"
32
33
#include "testsuite/angle/testangle.h"
34
35
using regina::NAngleStructure;
35
36
using regina::NAngleStructureList;
37
using regina::NExampleTriangulation;
36
38
using regina::NPerm;
37
39
using regina::NTetrahedron;
38
40
using regina::NTriangulation;
58
60
/**< An untwisted layered loop of length 2. */
63
void copyAndDelete(NTriangulation& dest, NTriangulation* source) {
64
dest.insertTriangulation(*source);
65
// The two-tetrahedron figure eight knot complement is
66
// described at the beginning of chapter 8 of Richard
67
// Rannard's PhD thesis.
68
r = new NTetrahedron();
69
s = new NTetrahedron();
70
r->joinTo(0, s, NPerm(1, 3, 0, 2));
71
r->joinTo(1, s, NPerm(2, 0, 3, 1));
72
r->joinTo(2, s, NPerm(0, 3, 2, 1));
73
r->joinTo(3, s, NPerm(2, 1, 0, 3));
74
triFigure8.addTetrahedron(r);
75
triFigure8.addTetrahedron(s);
77
// The Gieseking manifold is simple enough; it has only one
79
r = new NTetrahedron();
80
r->joinTo(0, r, NPerm(1, 2, 0, 3));
81
r->joinTo(2, r, NPerm(0, 2, 3, 1));
82
triGieseking.addTetrahedron(r);
69
// Use pre-coded triangulations where we can.
70
copyAndDelete(triFigure8,
71
NExampleTriangulation::figureEightKnotComplement());
72
copyAndDelete(triGieseking, NExampleTriangulation::gieseking());
84
74
// Layered loops can be constructed automatically.
85
75
triLoopC2.insertLayeredLoop(2, false);