48
* Represents a general Lens space.
49
* Represents a general lens space.
51
* The lens space L(\a p,\a q) is the 3-manifold you get by
52
* \a p/q Dehn surgery on the unknot. For instance, L(1,0) and L(1,1)
53
* are the 3-sphere, L(0,1) is the product S^1 x S^2, and L(\a p,1) is the
54
* circle bundle over S^2 with Euler class \a p. In L(\a p,\a q) if you
55
* take a generator \a g of H_1 and evaluate the torsion linking form on it,
56
* then <\a g,\a g> = [+/- \a r^2 \a q/\a p] in Q/Z where \a r is an
50
59
* All optional NManifold routines are implemented for this class.
54
class NLensSpace : public NManifold {
63
class REGINA_API NLensSpace : public NManifold {
57
/**< The first parameter of the Lens space. */
66
/**< The first parameter of the lens space. */
59
/**< The second parameter of the Lens space. This will
68
/**< The second parameter of the lens space. This will
60
69
always be stored in reduced form. */
64
* Creates a new Lens space with the given parameters.
73
* Creates a new lens space with the given parameters.
74
* See the class notes for details.
66
76
* \pre The two given parameters are coprime (have a gcd of 1).
68
* @param newP the first parameter \a p of the Lens space L(p,q).
69
* @param newQ the second parameter \a q of the Lens space L(p,q).
78
* @param newP the first parameter \a p of the lens space L(p,q).
79
* @param newQ the second parameter \a q of the lens space L(p,q).
70
80
* Note that there are no range restrictions whatsoever on this
73
83
NLensSpace(unsigned long newP, unsigned long newQ);
75
* Creates a clone of the given Lens space.
85
* Creates a clone of the given lens space.
77
* @param cloneMe the Lens space to clone.
87
* @param cloneMe the lens space to clone.
79
89
NLensSpace(const NLensSpace& cloneMe);
81
* Destroys this Lens space.
91
* Destroys this lens space.
83
93
virtual ~NLensSpace();
85
* Returns the first parameter \a p of this Lens space L(p,q).
95
* Returns the first parameter \a p of this lens space L(p,q).
96
* See the class notes for details.
87
98
* @return the first parameter.
89
100
unsigned long getP() const;
91
* Returns the second parameter \a q of this Lens space L(p,q).
102
* Returns the second parameter \a q of this lens space L(p,q).
103
* See the class notes for details.
92
105
* The value of \a q returned will be the smallest \a q between
93
106
* 0 and <i>p</i>-1 inclusive that produces the same 3-manifold
94
* as this Lens space. Thus it might not be the value of \a q
95
* that was used to initialise this Lens space.
107
* as this lens space. This means it might not be the value of \a q
108
* that was used to initialise this lens space.
97
110
unsigned long getQ() const;
99
* Determines whether this and the given Lens space represent
100
* the same 3-manifold. Note that this may be true even if they
101
* were initialised with different parameters.
112
* Determines whether this and the given lens space are
113
* homeomorphic 3-manifolds. Note that this may be true
114
* even if they were initialised with different parameters.
103
* @param compare the Lens space with which this will be compared.
104
* @return \c true if and only if this and the given Lens space
116
* @param compare the lens space with which this will be compared.
117
* @return \c true if and only if this and the given lens space
105
118
* are homeomorphic.
107
120
bool operator == (const NLensSpace& compare) const;