28. Parametrized surfaces and surface area

📖 Reading · 11 min
💡 Every code box below is live — edit it and hit Run.

§9.4 freed a curve from the constraint y=f(x) by introducing a single parameter t. This lesson does the same for surfaces — freeing them from z=f(x,y) by introducing two parameters, u and v. The payoff mirrors §9.5's arc length almost exactly: a formula for surface area built from a normal vector supplied, once again, by §9.2's cross product.

Parametrized surfaces

A parametrized surface is a vector-valued function of two variables:

\vec r(u,v)=\langle x(u,v),y(u,v),z(u,v)\rangle

As (u,v) ranges over some region D in the uv-plane, \vec r(u,v) traces out a surface in three-dimensional space. Every ordinary graph z=f(x,y) is a special case, parametrized trivially by \vec r(x,y)=\langle x,y,f(x,y)\rangle (using x,y themselves as the two parameters) — so nothing here replaces §10.0's graphs, it generalizes them to surfaces with no natural "height function" at all, like a sphere or a torus.

The sphere of radius R, parametrized using the angles from §11.4's spherical coordinates:

\vec r(\varphi,\theta)=\langle R\sin\varphi\cos\theta,\ R\sin\varphi\sin\theta,\ R\cos\varphi\rangle,\qquad\varphi\in[0,\pi],\ \theta\in[0,2\pi]

Tangent vectors and the normal

Holding v fixed and varying u traces a curve on the surface; its tangent vector is the partial derivative $\vec r_u=\frac{\partial\vec r}{\partial u}$ (exactly §9.4's derivative, now one of two partials instead of a single ordinary derivative). Symmetrically, \vec r_v is tangent to the curve traced by holding u fixed.

Both \vec r_u and \vec r_v are tangent to the surface at that point, so §9.2's cross product gives a vector perpendicular to the surface — a normal vector:

\vec r_u\times\vec r_v

This is exactly the same "two tangent directions, cross them for a normal" construction §9.3 used to find a plane through three points — here computed pointwise, at every location on a curved surface instead of once for a flat plane.

The surface area element and surface area

A tiny rectangle in the uv-plane, of area du\,dv, maps onto the surface as a small (nearly flat) parallelogram spanned by \vec r_u\,du and \vec r_v\,dv. By §9.2's parallelogram-area formula:

dS=|\vec r_u\times\vec r_v|\,du\,dv

\text{Surface Area}=\iint_D|\vec r_u\times\vec r_v|\,du\,dv

This is §6.1's arc-length construction, one dimension up — there, ds=|\vec r'(t)|\,dt came from the magnitude of a single tangent vector; here, dS comes from the magnitude of the cross product of two tangent vectors, because area (not length) is what a two-parameter surface sweeps out.

For an ordinary graph z=f(x,y), parametrized by $\vec r(x,y)=\langle x,y,f(x,y)\rangle$: \vec r_x=\langle1,0,f_x\rangle, \vec r_y=\langle0,1,f_y\rangle, and their cross product works out to \langle-f_x,-f_y,1\rangle, with magnitude \sqrt{1+f_x^2+f_y^2} — recovering exactly §5.3's surface-of-revolution integrand pattern, generalized from a curve revolved around an axis to any graph surface at all.

Doing it in Python

The surface area of a sphere of radius R, using the spherical parametrization — confirming the familiar 4\pi R^2:

import sympy as sp

phi, theta, R = sp.symbols('phi theta R', positive=True)
r = sp.Matrix([
    R * sp.sin(phi) * sp.cos(theta),
    R * sp.sin(phi) * sp.sin(theta),
    R * sp.cos(phi)
])

r_phi = r.diff(phi)
r_theta = r.diff(theta)
cross = r_phi.cross(r_theta)
dS = sp.simplify(sp.sqrt(cross.dot(cross)))
print(f"|r_phi x r_theta| = {dS}")

area = sp.integrate(sp.integrate(dS, (phi, 0, sp.pi)), (theta, 0, 2*sp.pi))
print(f"sphere surface area = {sp.simplify(area)}")

The surface area of a graph z=f(x,y), using the formula \sqrt{1+f_x^2+f_y^2} derived directly from the general parametrization — computed for a paraboloid over the unit disk:

import sympy as sp

x, y = sp.symbols('x y')
f = x**2 + y**2

f_x, f_y = sp.diff(f, x), sp.diff(f, y)
dS = sp.sqrt(1 + f_x**2 + f_y**2)
print(f"dS = {dS}")

r_, th = sp.symbols('r_ th', positive=True)
dS_polar = dS.subs({x: r_*sp.cos(th), y: r_*sp.sin(th)})
area = sp.integrate(sp.integrate(dS_polar * r_, (r_, 0, 1)), (th, 0, 2*sp.pi))
print(f"surface area over the unit disk = {sp.simplify(area)}")

Confirming the general cross-product formula reduces to the graph-surface formula \sqrt{1+f_x^2+f_y^2} directly:

import sympy as sp

x, y = sp.symbols('x y')
f = x**2 - y**2   # any function of x,y

r = sp.Matrix([x, y, f])
r_x, r_y = r.diff(x), r.diff(y)
cross = r_x.cross(r_y)
magnitude = sp.simplify(sp.sqrt(cross.dot(cross)))

f_x, f_y = sp.diff(f, x), sp.diff(f, y)
expected = sp.sqrt(1 + f_x**2 + f_y**2)

print(f"|r_x x r_y| = {magnitude}")
print(f"sqrt(1+f_x^2+f_y^2) = {expected}")
print(f"match: {sp.simplify(magnitude - expected) == 0}")

Worked example

Find the surface area of a sphere of radius R using the parametrization $\vec r(\varphi,\theta)=\langle R\sin\varphi\cos\theta,\ R\sin\varphi\sin\theta,\ R\cos\varphi\rangle$.

\vec r_\varphi=\langle R\cos\varphi\cos\theta,\ R\cos\varphi\sin\theta,\ -R\sin\varphi\rangle

\vec r_\theta=\langle-R\sin\varphi\sin\theta,\ R\sin\varphi\cos\theta,\ 0\rangle

Computing the cross product (§9.2's determinant formula) and simplifying with the Pythagorean identity throughout produces, after some algebra:

\vec r_\varphi\times\vec r_\theta=\langle R^2\sin^2\varphi\cos\theta,\ R^2\sin^2\varphi\sin\theta,\ R^2\sin\varphi\cos\varphi\rangle

|\vec r_\varphi\times\vec r_\theta|=R^2\sin\varphi\sqrt{\sin^2\varphi(\cos^2\theta+\sin^2\theta)+\cos^2\varphi}=R^2\sin\varphi\sqrt{\sin^2\varphi+\cos^2\varphi}=R^2\sin\varphi

(using \varphi\in[0,\pi], so \sin\varphi\ge0 and no absolute value is needed).

A=\int_0^{2\pi}\int_0^\pi R^2\sin\varphi\,d\varphi\,d\theta=R^2\int_0^{2\pi}\Big[-\cos\varphi\Big]_0^\pi d\theta=R^2\int_0^{2\pi}2\,d\theta=\boxed{4\pi R^2}

Sanity check. This matches the standard solid-geometry formula for a sphere's surface area exactly — the same kind of independent confirmation §11.4's spherical-coordinates volume computation received. Notably, |\vec r_\varphi\times\vec r_\theta|=R^2\sin\varphi is precisely the same \sin\varphi factor that appeared in §11.4's volume element \rho^2\sin\varphi\,d\rho\,d\varphi\,d\theta (here with \rho fixed at R) — both formulas trace back to the identical geometric fact that a patch near the poles sweeps out less area (or volume) than a same-angular-size patch near the equator. ✓

Your turn

1. For the graph z=x+y (a plane), find \sqrt{1+f_x^2+f_y^2} and use it to find the surface area over the unit square [0,1]\times[0,1].

2. Find the tangent vectors \vec r_u,\vec r_v and the normal vector \vec r_u\times\vec r_v for the cylinder $\vec r(u,v)=\langle\cos u,\sin u,v\rangle$ at (u,v)=\left(\frac\pi2,0\right).

3. True or false: the surface area formula \iint_D|\vec r_u\times\vec r_v|\,du\,dv depends on which parametrization is used to describe a given surface.

Solutions

1. f_x=1, f_y=1, so \sqrt{1+1+1}=\sqrt3 — a constant (the plane is uniformly tilted, so this makes sense: a flat, evenly-slanted surface stretches area by the identical factor everywhere).

A=\iint_{[0,1]\times[0,1]}\sqrt3\,dA=\sqrt3\cdot1=\boxed{\sqrt3}

2. \vec r_u=\langle-\sin u,\cos u,0\rangle, \vec r_v=\langle0,0,1\rangle. At u=\frac\pi2: \vec r_u=\langle-1,0,0\rangle.

\vec r_u\times\vec r_v=\langle-1,0,0\rangle\times\langle0,0,1\rangle=\langle(0)(1)-(0)(0),\,(0)(0)-(-1)(1),\,(-1)(0)-(0)(0)\rangle=\boxed{\langle0,1,0\rangle}

— pointing purely in the y-direction, which makes sense: at u=\frac\pi2, the point on the cylinder is (\cos\frac\pi2,\sin\frac\pi2,0)=(0,1,0), directly "north" on the circular cross-section, where the outward normal to a cylinder centered on the z-axis should indeed point purely along y.

3. False. This mirrors §9.5's parametrization-independence of arc length exactly: surface area is a property of the surface itself (the set of points, and how it curves), not of any particular parametrization chosen to describe it. Two different parametrizations of the identical sphere — say, using (\varphi,\theta) versus some other angle convention — must produce the same total area, even though the intermediate integrand |\vec r_u\times\vec r_v| can look completely different along the way.

Check yourself in code

Compute the surface area of a sphere of radius R using the parametrization $\vec r(\varphi,\theta)=\langle R\sin\varphi\cos\theta,\ R\sin\varphi\sin\theta,\ R\cos\varphi\rangle$.

Print exactly this:

|r_phi x r_theta| = R**2*Abs(sin(phi))
sphere surface area = 4*pi*R**2
import sympy as sp

phi, theta, R = sp.symbols('phi theta R', positive=True)
r = sp.Matrix([
    R * sp.sin(phi) * sp.cos(theta),
    R * sp.sin(phi) * sp.sin(theta),
    R * sp.cos(phi)
])

r_phi = r.diff(phi)
r_theta = r.diff(theta)
cross = r_phi.cross(r_theta)
dS = sp.simplify(sp.sqrt(cross.dot(cross)))
print("|r_phi x r_theta| = ...")

area = sp.integrate(sp.integrate(dS, (phi, 0, sp.pi)), (theta, 0, 2*sp.pi))
print("sphere surface area = ...")
import sympy as sp

phi, theta, R = sp.symbols('phi theta R', positive=True)
r = sp.Matrix([
    R * sp.sin(phi) * sp.cos(theta),
    R * sp.sin(phi) * sp.sin(theta),
    R * sp.cos(phi)
])

r_phi = r.diff(phi)
r_theta = r.diff(theta)
cross = r_phi.cross(r_theta)
dS = sp.simplify(sp.sqrt(cross.dot(cross)))
print(f"|r_phi x r_theta| = {dS}")

area = sp.integrate(sp.integrate(dS, (phi, 0, sp.pi)), (theta, 0, 2*sp.pi))
print(f"sphere surface area = {sp.simplify(area)}")

A parametrized surface \vec r(u,v) frees a surface from needing a z=f(x,y) formula, exactly the way §9.4 freed curves from y=f(x), and its surface area, \iint_D|\vec r_u\times\vec r_v|\,du\,dv, comes from §9.2's cross product measuring how much a tiny uv-rectangle stretches into a surface patch — the direct two-parameter sibling of §9.5's single-parameter arc length. Ordinary graphs recover §5.3's \sqrt{1+f_x^2+f_y^2} formula as a special case, and — like arc length before it — surface area never depends on which parametrization was used to compute it.

Next: integrating a function over a parametrized surface, using this same dS — and its vector-field counterpart, flux, measuring how much a field flows through a surface.