A Seifert surface for the (3,4) torus knot is defined by the intersection of $S^3 \subset \mathbb{C}^2$ with the set $\arg(z^4-w^3)=0$. The boundary is at $z^4=w^3$ and this is the torus knot. Here is a picture of its stereographic projection into $\mathbb{R}^3$:
If you replace $w\to e^{\frac{2\pi i}{3}}w$, this surface is unchanged. In the picture, the point in the middle gets mapped to the point at the top, the point at the top gets mapped to the point at the bottom, and the point at the bottom gets mapped to the point in the middle.
I want to use Mathematica to make a smooth animation of this happening. I've tried using ContourPlot3D
and ParametricPlot3D
but both produce surfaces that are joined up in a different way to the picture. I've also tried generating some random points on $S^3$, selecting those that satisfy $|\arg(z^4-w^3)|<\epsilon$ for a small $\epsilon$ and that does produce points looking like the picture. I've put the code for doing that at the bottom. If I use ListSurfacePlot3D
instead of ListPointPlot3D
, it gives the wrong picture. I can't believe this is the best Mathematica can do.
Explicit Definition of the Surface
The surface is the set of points $(z,w)\in \mathbb{C}^2$ such that
$|z|^2+|w|^2=1$ and $\arg(z^4-(e^{i\theta} w)^3)=0$,
where $\theta$ is a parameter that I want to vary for the animation. This surface is projected into $\mathbb{R}^3$ by stereographic projection
$f(z,w)=\left(\frac{\Re(z)}{1-\Im(w)},\frac{\Im(z)}{1-\Im(w)},\frac{\Re(w)}{1-\Im(w)}\right)$
Mathematica Code
n = 100; ε = 0.01;
R4pts = RandomVariate[
MultinormalDistribution[ConstantArray[0, 4], IdentityMatrix[4]],
300000];
S3pts = #/Norm[#] & /@ R4pts;
R3proj[a_] = {x/(1 - w), y/(1 - w), z/(1 - w)} /. {x -> a[[1]],
y -> a[[2]], z -> a[[3]], w -> a[[4]]};
complexify[
a_] = {x + I y, z + I w} /. {x -> a[[1]], y -> a[[2]],
z -> a[[3]], w -> a[[4]]};
C2pts = complexify /@ S3pts;
C2ptsSel =
Select[C2pts, (Abs[
Arg[z^4 - Exp[(I π)/2] w^3]] < ε) /. {z -> #[[
1]], w -> #[[2]]} &];
C2colours = Im[#[[2]]] & /@ C2ptsSel;
realify[a_] = {x, y, z, w} /. {x -> Re[a[[1]]], y -> Im[a[[1]]],
z -> Re[a[[2]]], w -> Im[a[[2]]]};
S3ptsSel = realify /@ C2ptsSel;
R3pts = R3proj /@ S3ptsSel;
ListPointPlot3D[{#} & /@ R3pts,
PlotRange -> {{-2, 2}, {-2, 2}, {-2, 2}},
PlotStyle -> ((Hue[(# - Min[C2colours])/(
Max[C2colours] - Min[C2colours])] &) /@ C2colours),
AspectRatio -> 1, ViewPoint -> {2, 1, 0.7}, ImageSize -> 400]
EDIT: The same code with ListSurfacePlot3D gives this picture:
z=r1*exp(i*theta1)
withr1<1
and then use the two equations to solve forw=r2*exp(i*theta2)
. That might make the point selection process easier at least. $\endgroup$