Message Boards Message Boards

[GIF] Gridded (Associate family of Scherk's surfaces)

GROUPS:

Associate family of Scherk's surfaces

Gridded

The associate family of Scherk's surfaces.

The code below implicitly uses the Weierstrass–Enneper parametrization $f(z) = \frac{4}{1-z^2}$, $g(z) = iz$, since

$\int_0^\zeta \frac{f(z)(1-g(z)^2)}{2} dz = 2 \operatorname{arctanh} \zeta$, $\int_0^\zeta i \frac{f(z)(1+g(z)^2)}{2} dz = 2 i \arctan \zeta$, and $\int_0^\zeta f(z) g(z) dz = 2 i \operatorname{arctanh}(\zeta^2)$.

This is too slow to give a useful Manipulate, so I just give the GIF-generating code:

scherk2[u_, v_, θ_] := 
 Re[E^(I θ) {ArcTanh[z], I ArcTan[z], I ArcTanh[z^2]} /. z -> u + I v]

scherkfamily = Module[{a = .9, cols},
   cols = RGBColor /@ {"#07588A", "#E4FCF9"};
   ParallelTable[
      Show[
       ParametricPlot[
        Table[scherk2[u, v, θ][[2 ;;]], {v, -a, a, a/7}], 
          {u, -a, a}, PlotRange -> 2, Axes -> None, 
        Background -> Last[cols], ImageSize -> 540, 
        PlotStyle -> cols[[1]]], 
       ParametricPlot[
        Table[scherk2[u, v, θ][[2 ;;]], {u, -a, a, a/7}], 
          {v, -a, a}, PlotStyle -> cols[[1]]]], {θ, 0.,  2 π - #, #}] &[2 π/250] 
   ];

Export[NotebookDirectory[] <> "scherkfamily.gif", scherkfamily, 
 "DisplayDurations" -> {1/50}]
POSTED BY: Clayton Shonkwiler
Answer
1 year ago

Very nice and compact :-)

POSTED BY: Sander Huisman
Answer
1 year ago

enter image description here - another post of yours has been selected for the Staff Picks group, congratulations !

We are happy to see you at the top of the "Featured Contributor" board. Thank you for your wonderful contributions, and please keep them coming!

POSTED BY: Moderation Team
Answer
1 year ago

Hopefully, the following version is a bit more responsive for everybody:

With[{a = 0.9, n = 60, ls = Directive[AbsoluteThickness[1.6], Opacity[1, RGBColor["#07588A"]]]},
     Animate[ParametricPlot[With[{z = u + I v}, Re[E^(I θ) {I ArcTan[z], I ArcTanh[z^2]}]], {u, -a, a}, {v, -a, a},
                            Axes -> None, Background -> RGBColor["#E4FCF9"], BoundaryStyle -> ls, Frame -> None,
                            ImageSize -> 540, Mesh -> 13, MeshStyle -> ls, PlotPoints -> 55,
                            PlotRange -> 2, PlotStyle -> None], {θ, 0, 2 π, 2 π/(n - 1)}]]
POSTED BY: J. M.
Answer
1 year ago

Ah, jeez, that was stupid of me. Of course ParametricPloting the region will be much faster than plotting dozens of individual curves.

POSTED BY: Clayton Shonkwiler
Answer
1 year ago

I liked the polar version, too:

scherk[r_, θ_, φ_] = FullSimplify[ComplexExpand[With[{z = r E^(I θ)},
                                  Re[E^(I φ) {ArcTanh[z], I ArcTan[z], I ArcTanh[z^2]}]], TargetFunctions -> {Re, Im}]];

With[{a = 0.9, vp = {1.3, -2.4, 2.}, n = 60, ls = Directive[AbsoluteThickness[1.6], Opacity[1, RGBColor["#07588A"]]]}, 
     Animate[ParametricPlot[Most[RotationMatrix[{vp, {0, 0, 1}}].scherk[r, θ, φ]], {r, 0, a}, {θ, -π, π},
                            Axes -> None, Background -> RGBColor["#E4FCF9"], BoundaryStyle -> ls, Evaluated -> True,
                            Frame -> None, ImageSize -> 540, Mesh -> 13, MeshStyle -> ls, PlotPoints -> {55, 175},
                            PlotRange -> 2, PlotStyle -> None], {φ, 0, 2 π, 2 π/(n - 1)}]]

woosh

POSTED BY: J. M.
Answer
1 year ago

Yeah, definitely. Here's the polar one I made before I got rid of the rendered surface altogether (check out the file size to see why I got rid of the rendered surface):

Scherk surface associate family

POSTED BY: Clayton Shonkwiler
Answer
1 year ago

Group Abstract Group Abstract