# Spiral gridding in Plot3D

I would like to represent a curved manifold with a "frame dragging", such as this one (source):

I have done the following:

Plot3D[1 - 8/Sqrt[x^2 + y^2] , {x, -8, 8}, {y, -8, 8}, Boxed -> False,
Axes -> False, PlotRange -> {{-8, 8}, {-8, 8}, {-8, 8}}]


How can I make a gridding with spiral-like shape?

Edit

I found that involute of circle also work. https://en.wikipedia.org/wiki/Involute

r[m_, s_] = {Cos[s + m], Sin[s + m]};
involute[m_, s_] = r[m, s] + s*Normalize[Derivative[0, 1][r][m, s]];
ParametricPlot[
Table[involute[m, s], {m, Subdivide[2 π, 8]}], {s, 0, 7},
Epilog -> {Red, Disk[]}]


{x, y} = involute[m, s];
ParametricPlot3D[{x, y, 1 - 8/Sqrt[x^2 + y^2]}, {m, 0, 2 π}, {s,
0, 10}, MeshFunctions -> {#4 &}, Mesh -> {Subdivide[2 π, 8]},
Boxed -> False, Axes -> False, PlotStyle -> None,
Method -> {"BoundaryOffset" -> False}, BoundaryStyle -> None,
PlotPoints -> 30]


Original

To make the lines does not overlay, we use equiangular spiral.

{n, v} = {10, 1};
p0 = CirclePoints[8, n];
p = Table[r[i][t], {i, n}];
sol = NDSolve[{D[p, t] ==
v*Normalize /@ (RotateLeft[p] - p), (p /. t -> 0) == p0,
WhenEvent[Norm[r[1][t]] < .1, {Sow[t], "StopIntegration"}]},
p, {t, 0, 25}];
plot = ParametricPlot[p /. sol, {t, 0, 25}]


vortex =
ParametricPlot3D[
Evaluate@
Table[{Indexed[p[[i]], 1], Indexed[p[[i]], 2],
1 - 8/Sqrt[Indexed[p[[i]], 1]^2 + Indexed[p[[i]], 2]^2]} /.
sol, {i, 1, n}], {t, 0, 25}, AspectRatio -> 1,
PlotRange -> {{-8, 8}, {-8, 8}, {-8, 8}}, Boxed -> False,
Axes -> False]


Feel free to update this answer with physical drag, here is only the way to go:

drag[r_] := 1/r + 1;

ParametricPlot3D[
{r Cos[ t drag[r]], r Sin[ t drag[r]], 1 - 8/r},
{r, 1, 8}, {t, 0, 2 Pi}, Boxed -> False, Axes -> False,
PlotRange -> {{-8, 8}, {-8, 8}, {-8, 8}}
]


Take the example from ParametricPlot3D. It look that way

drag[r_] := 1/r + 1;

Table[ParametricPlot3D[{r Cos[t drag[r]], r Sin[t drag[r]],
1 - 8/r}, {r, 1, 8}, {t, 0, 2 Pi}, Boxed -> False, Axes -> False,
PlotRange -> {{-8, 8}, {-8, 8}, {-8, 8}}, MeshFunctions -> {f},
Mesh -> 5], {f, {Function[{x, y, z, u, v}, x],
Function[{x, y, z, u, v}, y], Function[{x, y, z, u, v}, z],
Function[{x, y, z, u, v}, u], Function[{x, y, z, u, v}, v]}}]


This allow the particles on the spirals inward to excape:

gericPlot[
theta_] := (plot1 =
Plot3D[g[x, y], {x, -3, 3}, {y, -3, 3},
MeshFunctions -> {#3 &,
Mod[Sqrt[#1^2 + #2^2] ArcTan[#1, #2], Pi, theta] &},
MeshStyle -> {Automatic, Thick},
Mesh -> {15, {theta, theta + Pi/3, theta + Pi/2, theta + 2 Pi/3,
theta + Pi}}, Boxed -> False, Axes -> False,
RegionFunction -> Function[{x, y, z}, x^2 + y^2 < 3],
PlotPoints -> 25];
point = 2 {Cos[theta], Sin[theta], 0};
plot2 =
Graphics3D[{Opacity[.5], EdgeForm[None],
Polygon[{-point, point,
point + {0, 0, 10}, -point + {0, 0, 10}}]}];
Show[plot1, plot2, SphericalRegion -> True]);
gericPlot[\[Pi]]


This uses Plot3D and MeshFunctions. Here this are two meshfunctions on the surface. These are circles and spirals. It is inspired from extraneous curve due to meshfunctions. The parameter $$\theta$$ allows control over how the curves behave and where they are. Arctan is in need and has to be nonsingular in the argument. Such a phase a $$\theta$$ is needed.

The first and the second demonstration can be combined. Have fun.

Have a look at this answer from me for adding labels in Plot3D: adding z value to mesh lines in plot3d.