Following Takahashi (*"On the concrete construction of hyperbolic structure of 3-manifolds"*), I was able to construct the Euclidean cusp cross-section for the 5\_2 knot complement (please see <http://kias.dyndns.org/topogeoimages/5_2.cusp.png>), and determine the vertex invariants



```
x = 0.12256116687665364 + 0.7448617666197441 i
y = 0.6623589786223728 + 0.5622795120623012 i and
z = 0.7849201454990264 + 1.3071412786820453 i.

```

I would like to be able to compute the cusp shape from x, y and z, but as a retired physicist and learning this on my own, I have not been able to come up with an algorithm to do this. I have been able to compute the cusp shape following Yokota ("On the cusp shape of hyperbolic knots"), but this is from the knot, not from the cusp cross-section. I feel this should be easy, but the SnapPy documentation (and code, for that matter) is not entirely clear to me, nor is Coulson et. al. ("Computing Arithmetic Invariants of 3-Manifolds").


If I could just see the cusp shape in terms of x1, x2, x3, y1, y2, y3, z1, z2 and z3, I am reasonably sure I can work backwards to an algorithm I can use. Thanks in advance.


**Edit:**


In reference to Sam Nead's answer:


I believe that the image in the link ("5.2.cusp.png") is topologically the correct tiling. Using Mathematica to compute the angles around each edge in the cusp tiling, and then to draw the associated rays along each angle, I pieced these together to make an approximate geometrical sketch of the tiling (please see <http://kias.dyndns.org/topogeoimages/5_2.geometric.png>). This matches closely with Takahashi's figure 25.
Then I did what any physicist would do: I took measurements of the sides of the bounding parallelogram. The ratio of those lengths (arbitrarily in pixels, but since similar parallelograms have equal side ratios, that should not be a problem) is approximately 452/153 = 2.9425. The acute angle of the bounding parallelogram (corresponding to x1, for instance) is 80.6562 degrees or 1.40772 radians. As per Adams, Hildebrand and Weeks ("Hyperbolic invariants of knots and links"), I should obtain the homological cusp shape as


(longitude/meridian) . Exp(Pi.I.angle\_radians)


For this I get 0.479646 + 2.91505 I.
In checking this with SnapPy (which gives a cusp shape of -2.4902446675 + 2.9794470665 I), I noticed that, while I got the same tetrahedra shapes as Takahashi, SnapPy disagrees with those (my y is the difference between SnapPy's first two shapes).
Further, <https://knotinfo.math.indiana.edu> gives translations yielding a cusp shape of 2.49024 - 2.97945 I. I am assuming this is simply a choice of orientation (the real part of the meridian differs by a sign). When I followed Yokota, I got SnapPy's result.
I know that there can exist inequivalent cusp tilings, but it seems to me that the tetrahedra shapes should be invariant, and certainly the cusp shape is an invariant. I am now pretty much thoroughly confused.


**Further edit:**


Thank you!


Now, with some judicious use of the law of sines, I find for the magnitude of the cusp shape


Csc[Arg[y2]] Csc[Arg[z3]] Sin[Arg[y3]] Sin[Arg[z1]] +
Csc[Arg[z1]] Sin[Arg[z2]] +
Csc[Arg[x2]] (Sin[Arg[x3]] +
Csc[Arg[z3]] Sin[Arg[x1]] Sin[Arg[z2]]) = 3.01951


which with the complement of the acute angle (Arg[z1]+Arg[x3]) = 99.3438 degrees, gives precisely the result of the shape of m015 from SnapPy.


One more question: when I ask SnapPy for the cusp shape with and without specifying shortest peripheral curve, the answers seem to differ by an integer. For 5\_2, the integer was 2; for 6\_1 it is also 2; for 6\_2, it is 7. And when I compute the cusp shape for m004, my answer is exactly 2 greater than SnapPy's. Is there a simple reason for this (i.e., is the shape defined mod Z)?


PS:
Out of SnapPy (2.8) CensusKnots, 1267 were single cusp and for only 81 were the difference between cusp shapes not integers.



Computation of cusp shape from vertex invariants
It looks like you have computed the "tetrahedra shapes" for the three ideal hyperbolic tetrahedra making up the knot complement. Each of these gives a (euclidian!) shape to the four "cusp triangles" that "cut off" the four ideal vertices of the tetrahedron. To compute the shape of the cusp, you need to understand how it is tiled by the (in total 12) cusp triangles. To do this by hand takes some work! To get started, draw one of the tetrahedra $t$ in the upper-half-space model (with a vertex at infinity), and consider how the other three tetrahedra, that also meet infinity, and that also meet $t$, lie in the model. Each of these has just one cusp triangle that separates the body of the tetrahedron from infinity. You want to use the shapes $x\_i$, $y\_i$, and $z\_i$ to tile these outward... (say on the horoplane at height one).


**EDIT**: Very nice pictures! Here is a bit of a snappy session which may be helpful to you.



> 
> In[1]: M = Manifold("5\_2")
> 
> 
> In[2]: M.cusp\_info()
> 
> 
> Out[2]: [Cusp 0 : complete torus cusp of shape -2.49024466751 +
> 2.97944706648\*I]
> 
> 
> In[3]: M.set\_peripheral\_curves("shortest")
> 
> 
> In[4]: M.cusp\_info()
> 
> 
> Out[4]: [Cusp 0 : complete torus cusp of shape -0.49024466751 +
> 2.97944706648\*I]
> 
> 
> 


The thing to notice here is that the cusp shape (that is the "shape of the fundamental parallelogram") depends on the choice of a basis for the cusp group $P$. The cusp group $P$ is a copy of $\mathbb{Z}^2$. Each element of $P$ gives a parabolic Mobius transformation. Depending on the generating set (for $P$) that we use, we will get different cusp shapes!


Since $5\_2$ is a knot, the cusp group has one natural basis coming from the topological meridian (bounds a disk in $S^3$) and the topological longitude (bounds a Seifert surface in $S^3$). Since the complement of $5\_2$ is a hyperbolic manifold (called m015 in the snappy census), the cusp group has another natural basis coming from the two elements of $P$ which have smallest (parabolic) translation.


If you ask snappy for the cusp shape of the hyperbolic manifold, it agrees with you, up to a sign.



> 
> In[5]: M.identify()
> 
> 
> Out[5]: [m015(0,0), 5\_2(0,0), K3\_2(0,0), K5a1(0,0)]
> 
> 
> In[6]: N = Manifold("m015")
> 
> 
> In[7]: N.cusp\_info()
> 
> 
> Out[7]: [Cusp 0 : complete torus cusp of shape -0.4902446675 +
> 2.9794470665\*I]
> 
> 
> 


