# Common parametrized surfaces in 3D.¶

AUTHORS:

- Joris Vankerschaver (2012-06-16)

class sage.geometry.riemannian_manifolds.surface3d_generators.SurfaceGenerators

Bases: object

A class consisting of generators for several common parametrized surfaces in 3D.

static Catenoid(c=1, name='Catenoid')

Return a catenoid surface, with parametric representation

\begin{split}\begin{aligned} x(u, v) & = c \cosh(v/c) \cos(u); \\ y(u, v) & = c \cosh(v/c) \sin(u); \\ z(u, v) & = v. \end{aligned}\end{split}

INPUT:

• c – surface parameter.
• name – string. Name of the surface.

EXAMPLES:

sage: cat = surfaces.Catenoid(); cat
Parametrized surface ('Catenoid') with equation (cos(u)*cosh(v), cosh(v)*sin(u), v)
sage: cat.plot()
Graphics3d Object

static Crosscap(r=1, name='Crosscap')

Return a crosscap surface, with parametrization

\begin{split}\begin{aligned} x(u, v) & = r(1 + \cos(v)) \cos(u); \\ y(u, v) & = r(1 + \cos(v)) \sin(u); \\ z(u, v) & = - r\tanh(u - \pi) \sin(v). \end{aligned}\end{split}

INPUT:

• r – surface parameter.
• name – string. Name of the surface.

EXAMPLES:

sage: crosscap = surfaces.Crosscap(); crosscap
Parametrized surface ('Crosscap') with equation ((cos(v) + 1)*cos(u), (cos(v) + 1)*sin(u), -sin(v)*tanh(-pi + u))
sage: crosscap.plot()
Graphics3d Object

static Dini(a=1, b=1, name="Dini's surface")

Return Dini’s surface, with parametrization

\begin{split}\begin{aligned} x(u, v) & = a \cos(u)\sin(v); \\ y(u, v) & = a \sin(u)\sin(v); \\ z(u, v) & = u + \log(\tan(v/2)) + \cos(v). \end{aligned}\end{split}

INPUT:

• a, b – surface parameters.
• name – string. Name of the surface.

EXAMPLES:

sage: dini = surfaces.Dini(a=3, b=4); dini
Parametrized surface ('Dini's surface') with equation (3*cos(u)*sin(v), 3*sin(u)*sin(v), 4*u + 3*cos(v) + 3*log(tan(1/2*v)))
sage: dini.plot()
Graphics3d Object

static Ellipsoid(center=(0, 0, 0), axes=(1, 1, 1), name='Ellipsoid')

Return an ellipsoid centered at center whose semi-principal axes have lengths given by the components of axes. The parametrization of the ellipsoid is given by

\begin{split}\begin{aligned} x(u, v) & = x_0 + a \cos(u) \cos(v); \\ y(u, v) & = y_0 + b \sin(u) \cos(v); \\ z(u, v) & = z_0 + c \sin(v). \end{aligned}\end{split}

INPUT:

• center – 3-tuple. Coordinates of the center of the ellipsoid.
• axes – 3-tuple. Lengths of the semi-principal axes.
• name – string. Name of the ellipsoid.

EXAMPLES:

sage: ell = surfaces.Ellipsoid(axes=(1, 2, 3)); ell
Parametrized surface ('Ellipsoid') with equation (cos(u)*cos(v), 2*cos(v)*sin(u), 3*sin(v))
sage: ell.plot()
Graphics3d Object

static Enneper(name="Enneper's surface")

Return Enneper’s surface, with parametrization

\begin{split}\begin{aligned} x(u, v) & = u(1 - u^2/3 + v^2)/3; \\ y(u, v) & = -v(1 - v^2/3 + u^2)/3; \\ z(u, v) & = (u^2 - v^2)/3. \end{aligned}\end{split}

INPUT:

• name – string. Name of the surface.

EXAMPLES:

sage: enn = surfaces.Enneper(); enn
Parametrized surface ('Enneper's surface') with equation (-1/9*(u^2 - 3*v^2 - 3)*u, -1/9*(3*u^2 - v^2 + 3)*v, 1/3*u^2 - 1/3*v^2)
sage: enn.plot()
Graphics3d Object

static Helicoid(h=1, name='Helicoid')

Return a helicoid surface, with parametrization

\begin{split}\begin{aligned} x(\rho, \theta) & = \rho \cos(\theta); \\ y(\rho, \theta) & = \rho \sin(\theta); \\ z(\rho, \theta) & = h\theta/(2\pi). \end{aligned}\end{split}

INPUT:

• h – distance along the z-axis between two successive turns of the helicoid.
• name – string. Name of the surface.

EXAMPLES:

sage: helicoid = surfaces.Helicoid(h=2); helicoid
Parametrized surface ('Helicoid') with equation (rho*cos(theta), rho*sin(theta), theta/pi)
sage: helicoid.plot()
Graphics3d Object

static Klein(r=1, name='Klein bottle')

Return the Klein bottle, in the figure-8 parametrization given by

\begin{split}\begin{aligned} x(u, v) & = (r + \cos(u/2)\cos(v) - \sin(u/2)\sin(2v)) \cos(u); \\ y(u, v) & = (r + \cos(u/2)\cos(v) - \sin(u/2)\sin(2v)) \sin(u); \\ z(u, v) & = \sin(u/2)\cos(v) + \cos(u/2)\sin(2v). \end{aligned}\end{split}

INPUT:

• r – radius of the “figure-8” circle.
• name – string. Name of the surface.

EXAMPLES:

sage: klein = surfaces.Klein(); klein
Parametrized surface ('Klein bottle') with equation (-(sin(1/2*u)*sin(2*v) - cos(1/2*u)*sin(v) - 1)*cos(u), -(sin(1/2*u)*sin(2*v) - cos(1/2*u)*sin(v) - 1)*sin(u), cos(1/2*u)*sin(2*v) + sin(1/2*u)*sin(v))
sage: klein.plot()
Graphics3d Object

static MonkeySaddle(name='Monkey saddle')

Return a monkey saddle surface, with equation

$z = x^3 - 3xy^2.$

INPUT:

• name – string. Name of the surface.

EXAMPLES:

sage: saddle = surfaces.MonkeySaddle(); saddle
Parametrized surface ('Monkey saddle') with equation (u, v, u^3 - 3*u*v^2)
Graphics3d Object

static Paraboloid(a=1, b=1, c=1, elliptic=True, name=None)

Return a paraboloid with equation

$\frac{z}{c} = \pm \frac{x^2}{a^2} + \frac{y^2}{b^2}$

When the plus sign is selected, the paraboloid is elliptic. Otherwise the surface is a hyperbolic paraboloid.

INPUT:

• a, b, c – Surface parameters.
• elliptic (default: True) – whether to create an elliptic or hyperbolic paraboloid.
• name – string. Name of the surface.

EXAMPLES:

sage: epar = surfaces.Paraboloid(1, 3, 2); epar
Parametrized surface ('Elliptic paraboloid') with equation (u, v, 2*u^2 + 2/9*v^2)
sage: epar.plot()
Graphics3d Object

sage: hpar = surfaces.Paraboloid(2, 3, 1, elliptic=False); hpar
Parametrized surface ('Hyperbolic paraboloid') with equation (u, v, -1/4*u^2 + 1/9*v^2)
sage: hpar.plot()
Graphics3d Object

static Sphere(center=(0, 0, 0), R=1, name='Sphere')

Return a sphere of radius R centered at center.

INPUT:

• center – 3-tuple, center of the sphere.
• R – Radius of the sphere.
• name – string. Name of the surface.

EXAMPLES:

sage: sphere = surfaces.Sphere(center=(0, 1, -1), R=2); sphere
Parametrized surface ('Sphere') with equation (2*cos(u)*cos(v), 2*cos(v)*sin(u) + 1, 2*sin(v) - 1)
sage: sphere.plot()
Graphics3d Object


Note that the radius of the sphere can be negative. The surface thus obtained is equal to the sphere (or part thereof) with positive radius, whose coordinate functions have been multiplied by -1. Compare for instant the first octant of the unit sphere with positive radius:

sage: octant1 = surfaces.Sphere(R=1); octant1
Parametrized surface ('Sphere') with equation (cos(u)*cos(v), cos(v)*sin(u), sin(v))
sage: octant1.plot((0, pi/2), (0, pi/2))
Graphics3d Object


with the first octant of the unit sphere with negative radius:

sage: octant2 = surfaces.Sphere(R=-1); octant2
Parametrized surface ('Sphere') with equation (-cos(u)*cos(v), -cos(v)*sin(u), -sin(v))
sage: octant2.plot((0, pi/2), (0, pi/2))
Graphics3d Object

static Torus(r=2, R=3, name='Torus')

Return a torus obtained by revolving a circle of radius r around a coplanar axis R units away from the center of the circle. The parametrization used is

\begin{split}\begin{aligned} x(u, v) & = (R + r \cos(v)) \cos(u); \\ y(u, v) & = (R + r \cos(v)) \sin(u); \\ z(u, v) & = r \sin(v). \end{aligned}\end{split}

INPUT:

• r, R – Minor and major radius of the torus.
• name – string. Name of the surface.

EXAMPLES:

sage: torus = surfaces.Torus(); torus
Parametrized surface ('Torus') with equation ((2*cos(v) + 3)*cos(u), (2*cos(v) + 3)*sin(u), 2*sin(v))
sage: torus.plot()
Graphics3d Object

static WhitneyUmbrella(name="Whitney's umbrella")

Return Whitney’s umbrella, with parametric representation

$x(u, v) = uv, \quad y(u, v) = u, \quad z(u, v) = v^2.$

INPUT:

• name – string. Name of the surface.

sage: whitney = surfaces.WhitneyUmbrella(); whitney