Function Repository Resource:

InversionSurface

Source Notebook

Compute the inversion surface

Contributed by: Wolfram Staff (original content by Alfred Gray)

ResourceFunction["InversionSurface"][ρ,s,t]

computes the inversion of a surface s with respect to a sphere of radius ρ and parameters u, v.

ResourceFunction["InversionSurface"][q,ρ,s,t]

computes the inversion with respect to a sphere displaced to a point q.

Details and Options

The inversion is performed with respect to a sphere called the inversion sphere.

Examples

Basic Examples (3) 

Define a torus:

In[1]:=
torus = Entity["Surface", "Torus"]["ParametricEquations"][3, 2][u, v]
Out[1]=

The inverse surface of a torus is a Dupin cyclide:

In[2]:=
invsurf = ResourceFunction["InversionSurface"][1, torus, {u, v}] // FullSimplify
Out[2]=
In[3]:=
ResourceFunction["InversionSurface"][1, invsurf, {u, v}] // FullSimplify
Out[3]=

Visualize them:

In[4]:=
ParametricPlot3D[
 Evaluate[{Entity["Surface", "Torus"]["ParametricEquations"][3, 2][u, v], ResourceFunction["InversionSurface"][1.5, Entity["Surface", "Torus"]["ParametricEquations"][3, 2][u, v], {u,
      v}]}], {u, 0, 2 \[Pi]}, {v, 0, 2 \[Pi]}, PlotStyle -> Opacity[.5], PlotRange -> All]
Out[4]=

Scope (5) 

Define a helicoid:

In[5]:=
Entity["Surface", "Helicoid"]["ParametricEquations"][1]
Out[5]=

The inverse surface of a helicoid:

In[6]:=
ResourceFunction["InversionSurface"][1.5, Entity["Surface", "Helicoid"]["ParametricEquations"][1][u, v], {u, v}] // FullSimplify
Out[6]=

A plot, including the inversion sphere:

In[7]:=
Show[ParametricPlot3D[
  Evaluate[Entity["Surface", "Helicoid"]["ParametricEquations"][.5][u,
     v]], {u, 0, 2}, {v, -\[Pi], \[Pi]}, PlotPoints -> 50, PlotStyle -> Opacity[.5], MaxRecursion -> 3, PlotRange -> {{-2, 2}, {-2, 2}, {-1, 1}}], ParametricPlot3D[
  Evaluate[FullSimplify[
    ResourceFunction["InversionSurface"][ 1, Entity["Surface", "Helicoid"]["ParametricEquations"][1][u, v], {u, v}]]], {u, - 2 \[Pi], 2 \[Pi]}, {v, -2 \[Pi], 2 \[Pi]}, ExclusionsStyle -> None, PlotStyle -> {Opacity[.5], Blue}, PlotPoints -> 50, MaxRecursion -> 3, PlotRange -> 2.5], Graphics3D[{Opacity[.5], Sphere[]}]]
Out[7]=

Zoom in near the origin:

In[8]:=
Show[ParametricPlot3D[
  Evaluate[{FullSimplify[
     ResourceFunction["InversionSurface"][ 1, Entity["Surface", "Helicoid"]["ParametricEquations"][1][u, v], {u, v}]]}], {u, - 2 \[Pi], 2 \[Pi]}, {v, -2 \[Pi], 2 \[Pi]}, ExclusionsStyle -> None, PlotStyle -> Opacity[.5], PlotPoints -> 50, MaxRecursion -> 3, PlotRange -> .5]]
Out[8]=

The inversion displaced to a point q:

In[9]:=
Show[ParametricPlot3D[
  Evaluate[FullSimplify[
    ResourceFunction["InversionSurface"][ .2 {1, 1, 1}, 1, Entity["Surface", "Helicoid"]["ParametricEquations"][1][u, v], {u, v}]]], {u, - 2 \[Pi], 2 \[Pi]}, {v, -2 \[Pi], 2 \[Pi]}, ExclusionsStyle -> None, PlotStyle -> {Opacity[.5], Blue}, PlotPoints -> 50, MaxRecursion -> 3, PlotRange -> 1.]]
Out[9]=

Publisher

Enrique Zeleny

Version History

  • 1.0.0 – 11 March 2020

Source Metadata

Related Resources

License Information