6
$\begingroup$

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

enter image description here

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}}]

enter image description here

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

$\endgroup$

3 Answers 3

8
$\begingroup$

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[]}]

enter image description here

{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]

enter image description here

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}]

enter image description here

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]

enter image description here

$\endgroup$
7
$\begingroup$

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}}
]

enter image description here

$\endgroup$
2
$\begingroup$

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]}}]

different mesh functions one for the purposes of the question

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]]

spirals plots on the given potential, surface

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.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.