Decorative parametric surfaces#

https://de.mathworks.com/help/matlab/ref/plot3.html

https://doc.sagemath.org/html/en/reference/plot3d/index.html

http://www.3d-meier.de/tut3/Seite0.html

http://www.3d-meier.de/tut8/Seite3.html

https://docs.ambientcg.com/books/website-licensing/page/license-information

https://ambientcg.com/list?category=&date=&createdUsing=&basedOn=&q=&method=&type=&sort=Downloads

Bourke Seashell#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D01a_BourkeSeaShell.3D.xml (D01a-c).

See also: http://paulbourke.net/geometry/spiral/

double n = 3;  // number of spirals
double a = 1;  // final shell radius
double b = 2;  // height
double c = 0.4;  // inner radius

double s = v;
double t = u;
double pt = t/(2*Math.PI);  // inner radius

x = a * (1 - pt) * Math.Cos(n*t) * (1 + Math.Cos(s)) + c * Math.Cos(n*t);
z = a * (1 - pt) * Math.Sin(n*t) * (1 + Math.Cos(s)) + c * Math.Sin(n*t);
y = b * pt + a * (1 - pt) * Math.Sin(s);

01a_BourkeSeaShell.3D \(\quad\) 01b_BourkeSeaShell.3D \(\quad\) 01c_BourkeSeaShell.3D

Seashell (mathworld.wolfram)#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D02a_Seashell.3D.xml (D02a-c).

See also: https://mathworld.wolfram.com/Seashell.html

double a = Math.Exp(u / (6.0 * Math.PI));
double b = Math.Cos(v / 2.0);

x = 2.0 * (1.0 - a) * Math.Cos(u) * b * b;
y = 2.0 * (-1.0 + a) * Math.Sin(u) * b * b;
z = (1.0 - a * a - Math.Sin(v) * (1.0 - a));

02a_Seashell.3D \(\quad\) 02b_Seashell.3D \(\quad\) 02c_Seashell.3D

3D Apple#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D03a_Apple.3D.xml (D03a-c).

double R1 = 5.0;
double R2 = 4.8;
double su = Math.Sin(u);
double sv = Math.Sin(v);
double cu = Math.Cos(u);
double c5u = Math.Cos(5*u);
double cv = Math.Cos(v);
x = cu * (R1 + R2 * cv) + Math.Pow(v/Math.PI, 20);
z = su * (R1 + R2 * cv) + 0.25 * c5u;
y = -2.3 * Math.Log(1 - v * 0.3157) + 6 * sv + 2 * cv;

03a_Apple.3D \(\quad\) 03b_Apple.3D \(\quad\) 03c_Apple.3D

Bow curve#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D04a_BowCurve.3D.xml (D04a-c).

See also: http://paulbourke.net/geometry/toroidal/

double p2 = 2*Math.PI;
double p4 = 4*Math.PI;
double T = 0.5; //Thickness

x = (2 + T * Math.Sin(p2 * u)) * Math.Sin(p4 * v);
y = (2 + T * Math.Sin(p2 * u)) * Math.Cos(p4 * v);
z = T * Math.Cos(p2 * u) + 3 * Math.Cos(p2 * v);

04a_BowCurve.3D \(\quad\) 04b_BowCurve.3D \(\quad\) 04c_BowCurve.3D

Fish Surface#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D05a_Fish.3D.xml (D05a-c).

See also: http://www.3d-meier.de/tut3/Seite47.html

See also Wikipedia [1368], MathWorld [1070].

double su = Math.Sin(u);
double s2u = Math.Sin(2*u);
double sv = Math.Sin(v);
double cu = Math.Cos(u);
double c2u = Math.Cos(2*u);
double cv = Math.Cos(v);
x = (cu - c2u) * cv / 4.0;
y = (su - s2u) * sv / 4.0;
z = cu;

05a_Fish.3D \(\quad\) 05b_Fish.3D \(\quad\) 05c_Fish.3D

Bourke Horn#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D06a_BourkeHorn.3D.xml (D06a-c).

See also: http://paulbourke.net/geometry/spiral/

double p2 = 2*Math.PI;
x = (2 + u * Math.Cos(v)) * Math.Sin(p2 * u);
y = (2 + u * Math.Cos(v)) * Math.Cos(p2 * u) + 2 * u;
z = u * Math.Sin(v);

06a_BourkeHorn.3D \(\quad\) 06b_BourkeHorn.3D \(\quad\) 06c_BourkeHorn.3D

Hexa torus#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D07a_HexaTorus.3D.xml (D07a-c).

See also: http://paulbourke.net/geometry/toroidal/

The C# code for the Klein bottle:

double a = Math.Cos(u);
double b = Math.Sin(u);
double c = Math.Cos(v);
double a2 = a * a;
double a4 = a2 * a2;

x = -(2.0 / 15.0) * a * (3 * c + b * (-30 + a4 * (90 - 60 * a2) + 5 * a * c));
z = -(1.0 / 15.0) * b * b * (c * b * (3 - 48 * a4 + 5 * a * b * (1 - 16 * a4)) - 60);
y = (2.0 / 15.0) * (3 + 5 * a * b) * Math.Sin(v);

07a_HexaTorus.3D \(\quad\) 07b_HexaTorus.3D \(\quad\) 07c_HexaTorus.3D

3D Breather Surface#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D08a_Breather.3D.xml (D08a-c).

See also: https://en.wikipedia.org/wiki/Breather_surface

See also: https://mathworld.wolfram.com/BreatherSurface.html

const double b = 0.4;
double r = 1 - b * b;
double w = Math.Sqrt(r);
double denom = b * (
    (w * Math.Cosh(b * u)) * (w * Math.Cosh(b * u)) +
    (b * Math.Sin(w * v)) * (b * Math.Sin(w * v)));

x = -u + (2 * r * Math.Cosh(b * u) * Math.Sinh(b * u)) / denom;
y = (2 * w * Math.Cosh(b * u) * (-(w * Math.Cos(v) * Math.Cos(w * v)) - Math.Sin(v) * Math.Sin(w * v))) / denom;
z = (2 * w * Math.Cosh(b * u) * (-(w * Math.Sin(v) * Math.Cos(w * v)) + Math.Cos(v) * Math.Sin(w * v))) / denom;

08a_Breather.3D \(\quad\) 08b_Breather.3D \(\quad\) 08c_Breather.3D

Kuen surface#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D09a_Kuen.3D.xml (D09a-c).

See also: https://mathworld.wolfram.com/KuenSurface.html

See also: https://virtualmathmuseum.org/Surface/kuen/kuen.html

See also: https://mathcurve.com/surfaces.gb/kuen/kuen.shtml

double a = 1.0 * Math.Sin(v);
double b = 1.0 + u * u * a * a;

x = 2.0 * a * (Math.Cos(u) + u * Math.Sin(u)) / b;
z = 2.0 * a * (Math.Sin(u) - u * Math.Cos(u)) / b;
y = Math.Log(Math.Tan(v / 2.0)) + 2.0 * Math.Cos(v) / b;

09a_Kuen.3D \(\quad\) 09b_Kuen.3D \(\quad\) 09c_Kuen.3D

Tranguloid trefoil#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D10a_TranguloidTrefoil.3D.xml (D10a-c).

See also: http://paulbourke.net/geometry/tranguloid/

There are other parametrizations:

See also: http://www.3d-meier.de/tut3/Seite56.html See also: https://mathart.org/sw/GreenSnake/Toroid2.html

See also: http://www.3d-meier.de/tut3/Seite159.html

double p2 = 2*Math.PI/3;
x = 2 * Math.Sin(3 * u) / (2 + Math.Cos(v));
y = 2 * (Math.Sin(u) + 2 * Math.Sin(2 * u)) / (2 + Math.Cos(v + p2));
z = (Math.Cos(u) - 2 * Math.Cos(2 * u)) * (2 + Math.Cos(v)) * (2 + Math.Cos(v + p2)) / 4;

10a_TranguloidTrefoil.3D \(\quad\) 10b_TranguloidTrefoil.3D \(\quad\) 10c_TranguloidTrefoil.3D

Triaxial teardrop#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D11a_TearDrop.3D.xml (D11a-c).

See also: http://paulbourke.net/geometry/triaxtear/

See also Wikipedia [1368], MathWorld [1070].

double p2 = 2*Math.PI/3;
x = ( 1 - Math.Cos(u) ) * Math.Cos(u + p2) * Math.Cos(v + p2) / 2;
y = -( 1 - Math.Cos(u) ) * Math.Cos(u + p2) * Math.Cos(v - p2) / 2;
z = Math.Cos(u - p2);

11a_TearDrop.3D \(\quad\) 11b_TearDrop.3D \(\quad\) 11c_TearDrop.3D

Gray Bottle#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D12a_GrayBottel.3D.xml (D12a-c).

See also: http://paulbourke.net/geometry/toroidal/

x = Math.Cos(v) * Math.Sqrt(Math.Abs(Math.Sin(2 * u))) * Math.Cos(u);
y = Math.Cos(v) * Math.Sqrt(Math.Abs(Math.Sin(2 * u))) * Math.Sin(u);
z = x*x - y*y + 2 * x * y * Math.Tan(v) * Math.Tan(v);

12a_GrayBottel.3D \(\quad\) 12b_GrayBottel.3D \(\quad\) 12c_GrayBottel.3D

Surfaces mimicking snail shells#

The XML code for the example below can be found online in the DataXlCalcNet repository or in the corresponding local DataXlCalcNet folder in the files D13a_Snail1.3D.xml (D13a-u).

See also: http://www.3d-meier.de/tut3/Seite89.html

21a_Snail1.3D \(\quad\) 21b_Snail1.3D \(\quad\) 21c_Snail1.3D

double R = 1;
double a = 1.6;
double b = 1.6;
double c = 1.0;
double h = 1.5;
double k = -7.0;
double w = 0.075;
//  umin = -50, umax = -1,    name:  Pseudoheliceras subcatenatum

double su = Math.Sin(u);
double scu = Math.Sin(c*u);
double sv = Math.Sin(v);
double cv = Math.Cos(v);
double ccu = Math.Cos(c*u);

double ewu = Math.Exp(w*u);

x = ewu * (h+a*cv) * ccu;
z = R * ewu * (h+a*cv) * scu;
y = ewu * (k + b * sv);

22a_Snail2.3D \(\quad\) 22b_Snail2.3D \(\quad\) 22c_Snail2.3D

23a_Snail3.3D \(\quad\) 23b_Snail3.3D \(\quad\) 23c_Snail3.3D

24a_Snail4.3D \(\quad\) 24b_Snail4.3D \(\quad\) 24c_Snail4.3D

Left figure: Astroceras surface.

Middle figure: Bellerophina surface.

Right figure: Euhoplites Surface.

25a_Snail5.3D \(\quad\) 25b_Snail5.3D \(\quad\) 25c_Snail5.3D

26a_Snail6.3D \(\quad\) 26b_Snail6.3D \(\quad\) 26c_Snail6.3D

27a_Snail7.3D \(\quad\) 27b_Snail7.3D \(\quad\) 27c_Snail7.3D

Left figure: Nautilus surface.

Middle figure: Natica stellata surface.

Right figure: Mya arenaria surface.