Surfaces of revolution#

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

A surface of revolution is a surface generated by rotating a two-dimensional curve about an axis. The resulting surface therefore always has azimuthal symmetry. Examples of surfaces of revolution include the apple surface, cone (excluding the base), conical frustum (excluding the ends), cylinder (excluding the ends), Darwin-de Sitter spheroid, Gabriel’s horn, hyperboloid, lemon surface, oblate spheroid, paraboloid, prolate spheroid, pseudosphere, sphere, spheroid, and torus (and its generalization, the toroid).

The standard parameterization of a surface of revolution is given by

\[x(u,v) = \phi(v) \cos(u)\]
\[y(u,v) = \phi(v) \sin(u)\]
\[z(u,v) = \psi(v)\]

One-Sheeted Hyperboloid#

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_Hyperboloid1.3D.xml (D01a-c).

The example below uses the following code in C#

var a = 1;
var c = 1;
var b = Math.Sqrt(1 + u * u);
var x = a * b * Math.Sin(v);
var y = a * b * Math.Cos(v);
var z = c * u;

See also: https://mathworld.wolfram.com/One-SheetedHyperboloid.html

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

D01a_Hyperboloid1.3D \(\quad\) D01b_Hyperboloid1.3D \(\quad\) D01c_Hyperboloid1.3D

Sphere#

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_SphereSqrt.3D.xml (D02a-f).

The example below uses the following code in C#

var y = Math.Sqrt(1-u*u) * Math.Cos(v);
var x = Math.Sqrt(1-u*u) * Math.Sin(v);
var z =  u;

See also: http://www.3d-meier.de/tut3/Seite86.html, Sphere

D02a_SphereSqrt.3D \(\quad\) D02b_SphereSqrt.3D \(\quad\) D02c_SphereSqrt.3D

D02d_SphereSqrt.3D \(\quad\) D02e_SphereSqrt.3D \(\quad\) D02f_SphereSqrt.3D

Prolate Spheroid#

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_ProlateSpheroidoid.3D.xml (D03a-c).

The example below uses the following code in C#

var a = 1;
var b = 1;
var c = 2;
var x = b * Math.Sqrt(1-u*u) * Math.Sin(v);
var y = a * Math.Sqrt(1-u*u) * Math.Cos(v);
var z =  c * u;

See also: http://paulbourke.net/geometry/spherical/ prolate spheroid, or ellipsoid of revolution See also: https://en.wikipedia.org/wiki/Ellipsoid#Parameterization ellipsoid of revolution See also: https://mathworld.wolfram.com/OblateSpheroid.html Oblate Spheroid

D03a_ProlateSpheroidoid.3D \(\quad\) D03b_ProlateSpheroidoid.3D \(\quad\) D03c_ProlateSpheroidoid.3D

Oblate Spheroid#

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_OblateSpheroidoid.3D.xml (D04a-c).

The example below uses the following code in C#

var a = 2;
var b = 2;
var c = 1;
var x = b * Math.Sqrt(1-u*u) * Math.Sin(v);
var y = a * Math.Sqrt(1-u*u) * Math.Cos(v);
var z =  c * u;

See also: http://paulbourke.net/geometry/spherical/ prolate spheroid, or ellipsoid of revolution See also: https://en.wikipedia.org/wiki/Ellipsoid#Parameterization ellipsoid of revolution See also: https://mathworld.wolfram.com/OblateSpheroid.html Oblate Spheroid

D04a_OblateSpheroidoid.3D \(\quad\) D04b_OblateSpheroidoid.3D \(\quad\) D04c_OblateSpheroidoid.3D

Drop 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_DropSurface.3D.xml (D05a-c).

The example below uses the following code in C#

double a = 0.5;  //(0 to 1)
double b = 1.00;  //(0 to 1)
var x = a * (b - Math.Cos(u)) * Math.Sin(u) * Math.Cos(v);
var y = a * (b - Math.Cos(u)) * Math.Sin(u) * Math.Sin(v);
var z = Math.Cos(u);

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

D05a_DropSurface.3D \(\quad\) D05b_DropSurface.3D \(\quad\) D05c_DropSurface.3D

Egg 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 D06a_EggSurface.3D.xml (D06a-c).

The example below uses the following code in C#

double a = 2.0;  //(0 to 1)
double b = 0.75;  //(0 to 1)
var x = Math.Sqrt(0.75 * u * (2 * a - u) * (1 - (a * a * b * b) / ((u + a) * (u + a)))) * Math.Sin(v);
var y = Math.Sqrt(0.75 * u * (2 * a - u) * (1 - (a * a * b * b) / ((u + a) * (u + a)))) * Math.Cos(v);
var z = u;

For the egg surface, also see Meier

D06a_EggSurface.3D \(\quad\) D06b_EggSurface.3D \(\quad\) D06c_EggSurface.3D

Apple 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 D07a_Apple.3D.xml (D07a-c).

The example below uses the following code in C#

var x =  Math.Cos(u) * (4 + 3.8 * Math.Cos(v));
var y =  Math.Sin(u) * (4 + 3.8 * Math.Cos(v));
var z = (Math.Cos(v) + Math.Sin(v) - 1) * (1 + Math.Sin(v)) * Math.Log(1 - Math.PI * v / 10) + 7.5 * Math.Sin(v);

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

For the apple surface, also see Meier

D07a_Apple.3D \(\quad\) D07b_Apple.3D \(\quad\) D07c_Apple.3D

Spinning top#

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_Spinningtop.3D.xml (D08a-c).

The example below uses the following code in C#

var x = (Math.Abs(u) - 1) * (Math.Abs(u) - 1) * Math.Sin(v);
var y = (Math.Abs(u) - 1) * (Math.Abs(u) - 1) * Math.Cos(v);
var z = u;

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

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

D08a_Spinningtop.3D \(\quad\) D08b_Spinningtop.3D \(\quad\) D08c_Spinningtop.3D

Pseudosphere#

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_PseudoSphere.3D.xml (D09a-c).

The example below uses the following code in C#

var x = Math.Cos(u) * Math.Sin(v);
var y = Math.Sin(u) * Math.Sin(v);
var z = (Math.Cos(v) + Math.Log(Math.Tan(0.5 * v)));

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

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

D09a_PseudoSphere.3D \(\quad\) D09b_PseudoSphere.3D \(\quad\) D09c_PseudoSphere.3D

Wave sphere 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 D10a_WaveSphere.3D.xml (D10a-b).

The example below uses the following code in C#

var x = u * Math.Cos(Math.Cos(u)) * Math.Cos(v);
var y = u * Math.Cos(Math.Cos(u)) * Math.Sin(v);
var z = u * Math.Sin(Math.Cos(u));

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

D10a_WaveSphere.3D \(\quad\) D10b_WaveSphere.3D

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 D11a_Torus.3D.xml (D11a-c).

The example below uses the following code in C#

var R = 1.5;
var r = 0.5;
var x = (R + r * Math.Cos(v)) * Math.Cos(u);
var y = (R + r * Math.Cos(v)) * Math.Sin(u);
var z = r * Math.Sin(v);

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

D11a_Torus.3D \(\quad\) D11b_Torus_lowerhalf.3D \(\quad\) D11c_Torus_backhalf.3D

Horn 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 D12a_HornTorus.3D.xml (D12a-c).

The example below uses the following code in C#

var R = 1.5;
var r = 1.5;
var x = (R + r * Math.Cos(v)) * Math.Cos(u);
var y = (R + r * Math.Cos(v)) * Math.Sin(u);
var z = r * Math.Sin(v);

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

D12a_HornTorus.3D \(\quad\) D12b_HornTorus_lowerhalf.3D \(\quad\) D12c_HornTorus_backhalf.3D

Spindle 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 D13a_SpindelTorus.3D.xml (D13a-c).

The example below uses the following code in C#

var R = 1.5;
var r = 2.5;
var x = (R + r * Math.Cos(v)) * Math.Cos(u);
var y = (R + r * Math.Cos(v)) * Math.Sin(u);
var z = r * Math.Sin(v);

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

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

D13a_SpindelTorus.3D \(\quad\) D13b_SpindelTorus_lowerhalf.3D \(\quad\) D13c_SpindelTorus_backhalf.3D

Elliptic 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 D14a_EllipticTorus.3D.xml (D14a-c).

The example below uses the following code in C#

var a = 0.2;
var b = 0.5;
var c = 1;
var su = Math.Sin(u);
var sv = Math.Sin(v);
var cu = Math.Cos(u);
var cv = Math.Cos(v);

var x = (c + a * cv) * cu;
var y = (c + a * cv) * su;
var z = b * sv;

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

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

D14a_EllipticTorus.3D \(\quad\) D14b_EllipticTorus.3D \(\quad\) D14c_EllipticTorus.3D