Curvature and the Frenet Frame
Drive down a road with your eyes on the steering wheel. On a straight stretch the wheel sits dead
centre; on a gentle bend you hold a little turn; on a hairpin you crank it hard. Curvature
is the mathematical steering wheel: it measures how sharply a curve is turning at each
point. A straight line has zero curvature; a tight circle has a lot.
To make this precise we ride along the curve in its
arc-length
parametrization \boldsymbol{\gamma}(s), where the velocity
is the unit tangent \mathbf{T}(s) = \boldsymbol{\gamma}'(s) and has
constant length one. Since \mathbf{T} never changes length, the
only way it can change at all is by changing direction — and the rate of that turning is
the curvature.
\kappa(s) = \left\lVert \frac{d\mathbf{T}}{ds} \right\rVert.
The moving frame: T, N, B
Differentiate the identity \mathbf{T}\cdot\mathbf{T} = 1. The product
rule gives 2\,\mathbf{T}\cdot\mathbf{T}' = 0, so
\mathbf{T}' is perpendicular to \mathbf{T}.
That perpendicular direction is where the curve is heading into its bend, and normalising it
defines the principal normal:
\mathbf{N}(s) = \frac{\mathbf{T}'(s)}{\lVert \mathbf{T}'(s)\rVert} = \frac{\mathbf{T}'(s)}{\kappa(s)}.
Now we have two perpendicular unit vectors. In three dimensions there is exactly one more unit
vector completing a right-handed orthonormal trio, built — as promised on the
parametrized
curves page — with the cross product. It is the binormal:
\mathbf{B}(s) = \mathbf{T}(s) \times \mathbf{N}(s).
Together \{\mathbf{T}, \mathbf{N}, \mathbf{B}\} form the Frenet
frame: a little set of axes carried by the curve, tumbling along with it. Unlike
the fixed x, y, z axes stuck to the room, this frame is glued to the
traveller — it always knows "forward" (\mathbf{T}), "into the bend"
(\mathbf{N}), and "out of the plane of the bend"
(\mathbf{B}).
The Frenet–Serret formulas
The real magic is how the three frame vectors change as you slide along. Each derivative is
itself a combination of the frame vectors, and the coefficients are just two numbers: the curvature
\kappa and a new quantity \tau, the
torsion, which measures how fast the curve twists out of the plane of its bend.
For a unit-speed curve with curvature \kappa > 0 and torsion
\tau, the frame evolves by
- \mathbf{T}' = \kappa\,\mathbf{N};
- \mathbf{N}' = -\kappa\,\mathbf{T} + \tau\,\mathbf{B};
- \mathbf{B}' = -\tau\,\mathbf{N}.
Here \kappa = \lVert \mathbf{T}'\rVert \geq 0 measures bending, and
\tau measures twisting; all derivatives are with respect to arc length
s.
Read them as a story. The tangent turns toward the normal at rate
\kappa (bending). The binormal turns toward the normal at rate
\tau (twisting). And the normal, caught between them, feeds back into
both. These three vector equations bottle up everything about the local shape of a curve:
the celebrated fundamental theorem of space curves says that a curve is completely
determined, up to rigid motion, by its two scalar functions
\kappa(s) and \tau(s). Give me your curvature
and torsion, and I can rebuild your curve.
A practical formula (any parametrization)
Reparametrizing by arc length is lovely in theory but, as we saw, usually impossible in closed
form. Happily there is a formula for curvature that works from any regular parametrization
\mathbf{r}(t), using the velocity and acceleration directly:
\kappa = \frac{\lVert \mathbf{r}'(t) \times \mathbf{r}''(t) \rVert}{\lVert \mathbf{r}'(t) \rVert^{3}}.
The cross product in the numerator measures how much the acceleration
\mathbf{r}'' points sideways, away from the direction of travel
\mathbf{r}' — which is exactly the part of the acceleration that bends
the path rather than speeding it up. Dividing by \lVert \mathbf{r}'\rVert^3
removes the parametrization's arbitrary speed, leaving a pure geometric number.
Worked example — the circle and the helix
The circle \mathbf{r}(t) = (R\cos t,\ R\sin t) has
\mathbf{r}'(t) = (-R\sin t,\ R\cos t), \qquad \mathbf{r}''(t) = (-R\cos t,\ -R\sin t).
In the plane the cross product reduces to the scalar
x'y'' - y'x'' = (-R\sin t)(-R\sin t) - (R\cos t)(-R\cos t) = R^2, while
\lVert\mathbf{r}'\rVert^3 = R^3. So
\kappa = \frac{R^2}{R^3} = \frac{1}{R}.
A circle of radius R has constant curvature
1/R — small circles bend hard, huge circles are nearly straight — and
its torsion is \tau = 0 because it lies flat in a plane. The quantity
1/\kappa = R is called the radius of curvature: at each
point of any curve, it is the radius of the circle that best hugs the curve there (the
"osculating circle").
The helix \mathbf{r}(t) = (\cos t,\ \sin t,\ c\,t), after
grinding through the cross product, gives the tidy constants
\kappa = \frac{1}{1 + c^2}, \qquad \tau = \frac{c}{1 + c^2}.
Both are constant — the helix bends and twists by the same amount at every point, which is exactly
why it looks so uniform. Set c = 0 and it collapses to the unit circle:
\kappa = 1, \tau = 0. The bigger the pitch
c, the more the twist \tau asserts itself.
Torsion is the signature of true three-dimensionality. There is a clean theorem: a curve with
\kappa > 0 has \tau = 0 everywhere
if and only if it lies entirely in a single plane. The reasoning is visible in
the Frenet–Serret formulas: \mathbf{B}' = -\tau\,\mathbf{N}, so
\tau = 0 means \mathbf{B}' = \mathbf{0} — the
binormal is a constant vector. A curve whose "out-of-plane" direction never changes is
trapped in the plane perpendicular to that fixed \mathbf{B}. So the
circle (flat) has \tau = 0, while the helix (genuinely climbing) has
\tau \neq 0. Torsion is the number that a flat creature living in a
plane could never even detect.
The definition \kappa = \lVert d\mathbf{T}/ds\rVert uses the derivative
with respect to arc length s, not the
parameter t. This trips almost everyone up:
\lVert d\mathbf{T}/dt\rVert is generally not the
curvature. They agree only for a unit-speed curve, where s and
t advance in lockstep. For a general parametrization the chain rule
inserts a speed factor,
\frac{d\mathbf{T}}{dt} = \frac{d\mathbf{T}}{ds}\,\frac{ds}{dt} = \kappa\,\lVert\mathbf{r}'\rVert\,\mathbf{N},
so \lVert d\mathbf{T}/dt\rVert = \kappa\,\lVert\mathbf{r}'\rVert, which
is inflated by the speed. Drive the same road faster and
\lVert d\mathbf{T}/dt\rVert shoots up even though the road's actual
bendiness hasn't changed one bit. That is precisely why we divide it out — either by
reparametrizing to unit speed, or by using the practical formula
\kappa = \lVert\mathbf{r}'\times\mathbf{r}''\rVert/\lVert\mathbf{r}'\rVert^3,
whose denominator does the dividing for you.
Watch the frame turn
Here is the parabola \mathbf{r}(t) = (t,\ t^2). Drag the slider to move
the point. The forward arrow is the unit tangent \mathbf{T}; the
perpendicular arrow is the principal normal \mathbf{N}, which always
points toward the inside of the bend. Watch how \mathbf{T}
swings quickly near the sharply-curved vertex and barely turns out on the nearly-straight arms —
the speed of that turning (per unit length) is exactly the curvature
\kappa, read out live below the frame.