Function Repository Resource:

TranslationSurface

Source Notebook

Compute a translation surface parametrization

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

ResourceFunction["TranslationSurface"][c1,c2,{t,u,v}]

computes a translation surface parametrized by u and v from two curves c1 and c2 parametrized by t.

Details and Options

A translation surface is the surface formed by moving the curve c1 (first generatrix) parallel to itself such that a point of the curve moves along the curve c2 (second generatrix), giving the surface formed by the parallel translation.
ResourceFunction["TranslationSurface"] computes a translation surface from curves c1 and c2 depending on t with a parametrization in terms of variables u and v.

Examples

Basic Examples (7) 

A plane is the translation surface of two intersecting lines:

In[1]:=
plane = ResourceFunction[
  "TranslationSurface"][{0, t, 0}, {t, 0, 0}, {t, u, v}]
Out[1]=

Plot it:

In[2]:=
ParametricPlot3D[plane, {u, 0, 2 Pi}, {v, 0, 2 Pi}, PlotStyle -> Opacity[.5]]
Out[2]=

A cylinder is the translation surface of a line translated along a circle:

In[3]:=
cyl = ResourceFunction[
  "TranslationSurface"][{Cos[t], Sin[t], 0}, {0, 0, t}, {t, u, v}]
Out[3]=

Plot it:

In[4]:=
ParametricPlot3D[cyl, {u, 0, 2 Pi}, {v, 0, 2 Pi}]
Out[4]=

A circle translated along a cosine curve:

In[5]:=
surface = ResourceFunction[
  "TranslationSurface"][{Cos[t], Sin[t], 0}, {Cos[t], 0, t}, {t, u, v}]
Out[5]=

Plot it:

In[6]:=
ParametricPlot3D[surface, {u, 0, 2 Pi}, {v, 0, 2 Pi}]
Out[6]=

Form elliptic and hyperbolic paraboloids by translating one parabola along another:

In[7]:=
ParametricPlot3D[
   ResourceFunction[
    "TranslationSurface"][{t, 0, t^2}, {0, t, #}, {t, u, v}], {u, -2 Pi, 2 Pi}, {v, -2 Pi, 2 Pi}, BoxRatios -> {1, 1, 1}] & /@ {t^2, -t^2}
Out[7]=

Translate one helix (red) along another helix (blue):

In[8]:=
Show[ParametricPlot3D[
  Evaluate[ResourceFunction[
    "TranslationSurface"][{Cos[t], Sin[t], t/4}, {Cos[t], Sin[t], t/4}, {t, u, v}]], {u, 0, 2 Pi}, {v, 0, 8 Pi}, MeshFunctions -> {#3 &}, PlotStyle -> Opacity[.5], PlotPoints -> 80], ParametricPlot3D[{{Cos[t], Sin[t], t/4}, {Cos[t] + 1, Sin[t], t/4}}, {t, 0, 8 Pi}, PlotStyle -> {{Thickness[.01], Blue}, {Thickness[.01], Red}}], Graphics3D[{Thickness[.01], Line[{{1, 0, 0}, {1, 0, 8}}]}]]
Out[8]=

Form an egg box surface by translating one sine along another:

In[9]:=
ParametricPlot3D[
 ResourceFunction[
  "TranslationSurface"][{t, 0, Sin[t]}, {0, t, Sin[t]}, {t, u, v}], {u, -4 Pi, 4 Pi}, {v, -4 Pi, 4 Pi}]
Out[9]=

For the Bohemian dome, the two generatrices are circles:

In[10]:=
ResourceFunction[
 "TranslationSurface"][{2 Cos[t], 0, 3 Sin[t]}, {0, 2 Sin[t], 3 Sin[t]}, {t, u, v}]
Out[10]=
In[11]:=
ParametricPlot3D[
 ResourceFunction[
  "TranslationSurface"][{2 Cos[t], 2 Sin[t], 0}, {0, 3 Cos[t], 3 Sin[t]}, {t, u, v}], {u, 0, 2 Pi}, {v, 0, 2 Pi}]
Out[11]=

Properties and Relations (5) 

A sample surface:

In[12]:=
ts = ResourceFunction[
  "TranslationSurface"][{Cos[t], Sin[t], 0}, {Cos[t], 0, Sin[t] Cos[t]}, {t, u, v}]
Out[12]=

For the coefficients of the second fundamental form, the second coefficient f is equal to zero for a translation surface:

In[13]:=
ResourceFunction["SecondFundamentalFormCoefficients"][ts, {u, v}] // PowerExpand // FullSimplify
Out[13]=

A surface generated by a polynomial translated along a parabola:

In[14]:=
ParametricPlot3D[
 ResourceFunction[
  "TranslationSurface"][{t, 0, (t^2 - 1)^2}, {0, t, -t^2}, {t, u, v}], {u, -1.5, 1.5}, {v, -1.5, 1.5}]
Out[14]=

There is symmetry as when the order of the curves is reversed, the same surface is obtained:

In[15]:=
ParametricPlot3D[
 ResourceFunction["TranslationSurface"][{0, t, -t^2}, s, {t, u, v}], {u, -1.5, 1.5}, {v, -1.5, 1.5}]
Out[15]=

This surface is equivalent to the surface of revolution of the sinusoid:

In[16]:=
ParametricPlot3D[
 ResourceFunction[
  "TranslationSurface"][{2 Cos[2 t], 2 Sin[2 t], 3 t}, {2 Cos[2 t], -2 Sin[2 t], 3 t}, {t, u, v}], {u, 0, 2 Pi}, {v,
   0, 2 Pi}, PlotPoints -> 80, MaxRecursion -> 5]
Out[16]=

The first Scherk minimal surface:

In[17]:=
ParametricPlot3D[
 ResourceFunction[
  "TranslationSurface"][{t, 0, Log[Cos[t]]}, {0, t, -Log[Cos[t]]}, {t,
    u, v}], {u, -1.5, 1.5}, {v, -1.5, 1.5}, PlotPoints -> 80, MaxRecursion -> 5]
Out[17]=

Code to get a curve with prescribed curvature (intrinsic curvature):

In[18]:=
intrinsic[f_, a_, {c_, d_, e_}, {min_, max_}][t_] := Module[{x, y, \[Theta], sol},
     eqic = {x'[s] == Cos[\[Theta][s]], y'[s] == Sin[\[Theta][s]], \[Theta]'[s] == f[s], x[a] == c, y[a] == d, \[Theta][a] == e};
     sol = NDSolve[eqic, {x, y, \[Theta]}, {s, min, max}];
     {x[t], y[t]} /. sol[[1]]
  ]

Choose two functions:

In[19]:=
f = intrinsic[3 Sin[#] &, 0, {0, 0, 0}, {-10 \[Pi], 10 \[Pi]}];
g = intrinsic[3 Cos[#] & , 0, {0, 0, 0}, {-10 \[Pi], 10 \[Pi]}];
ResourceFunction["TranslationSurface"][Insert[f[t], 0, 2], Insert[g[t], 0, 1], {t, u, v}]
Out[19]=

Plot the surface:

In[20]:=
ParametricPlot3D[
 Evaluate@
  ResourceFunction["TranslationSurface"][Insert[f[t], 0, 2], Insert[g[t], 0, 1], {t, u, v}], {u, -4., 4.}, {v, -2., 2.}, Mesh -> False, PlotPoints -> 80, MaxRecursion -> 5, PlotStyle -> Opacity[.5]]
Out[20]=

Publisher

Enrique Zeleny

Version History

  • 1.0.0 – 22 June 2020

Source Metadata

Related Resources

License Information