6. Velocity, acceleration, and arc-length parameterization

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

Give §9.4's vector-valued function a physical meaning — \vec r(t) as position at time t — and its derivatives immediately become velocity and acceleration, direct three-dimensional generalizations of §2.0's rate of change. This lesson also builds a specific way of parametrizing a curve that trades "time" for "distance already traveled," which turns out to be exactly what §9.6's curvature needs to have a clean formula.

Velocity and acceleration

For a position vector \vec r(t):

\vec v(t)=\vec r'(t)\qquad\text{(velocity)}\qquad\vec a(t)=\vec v'(t)=\vec r''(t)\qquad\text{(acceleration)}

Speed is the magnitude of velocity, a scalar rather than a vector:

\text{speed}=|\vec v(t)|

This mirrors §2's careful distinction between velocity (a signed rate, here a full vector with direction) and speed (its magnitude, always nonnegative) — the same distinction, now with direction genuinely living in three dimensions instead of just a sign.

Arc length, revisited one more time

§6.1 built arc length for a plane parametric curve as speed integrated over time, L=\int\sqrt{(x')^2+(y')^2}\,dt. In vector form, that integrand is exactly |\vec r'(t)| — and the formula extends to space curves with no change beyond adding a z-coordinate:

L=\int_a^b|\vec r'(t)|\,dt=\int_a^b\sqrt{[x'(t)]^2+[y'(t)]^2+[z'(t)]^2}\,dt

This is the same formula as §6.1, restated in vector notation — the vector framework doesn't add new calculus here, only a cleaner way to write what was already true.

The arc length function

Define s(t) as the distance traveled from a fixed starting time t_0 up to time t:

s(t)=\int_{t_0}^t|\vec r'(u)|\,du

By the Fundamental Theorem of Calculus (§4.3), $\dfrac{ds}{dt}=|\vec r'(t)|=\text{speed}$ — the arc length function's own derivative is just the speed, which makes sense by definition: it's the rate at which distance accumulates.

Arc-length parameterization

If s(t) is invertible (true whenever speed is never zero), solve for t as a function of s and substitute back into \vec r:

\vec r(s)=\vec r(t(s))

This reparametrizes the exact same curve, but now the parameter is literally the distance already traveled along it, rather than time. The defining property, checkable directly:

\left|\frac{d\vec r}{ds}\right|=1\qquad\text{always}

— arc-length parameterization always moves at unit speed. This follows from the chain rule (§2.4): $\frac{d\vec r}{ds}=\frac{d\vec r}{dt}\cdot\frac{dt}{ds}=\vec r'(t)\cdot\frac1{|\vec r'(t)|}$, which is exactly \vec r'(t) divided by its own magnitude — a unit vector, by construction (§9.0).

Why this matters: with unit speed guaranteed, a curve's shape — how sharply it bends — can be measured completely independently of how fast it happens to be traced. §9.6's curvature formula is dramatically simpler when written in terms of s rather than an arbitrary t, precisely because the "how fast" question has already been eliminated by this reparametrization.

Doing it in Python

Velocity, speed, and acceleration for the helix $\vec r(t)=\langle\cos t,\sin t,t\rangle$ — the same curve from §9.4:

import sympy as sp

t = sp.Symbol('t')
r = sp.Matrix([sp.cos(t), sp.sin(t), t])

v = r.diff(t)
speed = sp.simplify(sp.sqrt(v.dot(v)))
a = v.diff(t)

print(f"velocity     v(t) = {v.T}")
print(f"speed             = {speed}   (constant -- but sqrt(2), not 1, so this is not yet a unit-speed parameterization)")
print(f"acceleration a(t) = {a.T}")

The arc length of one full turn of the helix (t from 0 to 2\pi):

import sympy as sp

t = sp.Symbol('t')
r = sp.Matrix([sp.cos(t), sp.sin(t), t])
speed = sp.simplify(sp.sqrt(r.diff(t).dot(r.diff(t))))

L = sp.integrate(speed, (t, 0, 2 * sp.pi))
print(f"arc length of one turn = {L} = {float(L):.4f}")

Building the arc-length parameterization of the helix, and confirming it really does move at unit speed:

import sympy as sp

t, s = sp.symbols('t s')
r = sp.Matrix([sp.cos(t), sp.sin(t), t])
speed = sp.sqrt(2)   # constant, computed above

# s(t) = sqrt(2)*t  =>  t = s/sqrt(2)
t_of_s = s / sp.sqrt(2)
r_of_s = r.subs(t, t_of_s)
print(f"r(s) = {r_of_s.T}")

dr_ds = r_of_s.diff(s)
unit_speed_check = sp.simplify(sp.sqrt(dr_ds.dot(dr_ds)))
print(f"|dr/ds| = {unit_speed_check}   (exactly 1, confirming unit-speed parameterization)")

Worked example

For the helix \vec r(t)=\langle\cos t,\sin t,t\rangle, find the arc length over t\in[0,2\pi] and the arc-length parameterization.

\vec r'(t)=\langle-\sin t,\cos t,1\rangle

|\vec r'(t)|=\sqrt{\sin^2t+\cos^2t+1}=\sqrt{1+1}=\sqrt2

— a constant speed, using the Pythagorean identity (§0.4) exactly as in §6.1's circle example.

L=\int_0^{2\pi}\sqrt2\,dt=\boxed{2\sqrt2\,\pi}

Arc-length parameterization: s(t)=\int_0^t\sqrt2\,du=\sqrt2\,t, so t=\dfrac s{\sqrt2}:

\boxed{\vec r(s)=\left\langle\cos\frac s{\sqrt2},\ \sin\frac s{\sqrt2},\ \frac s{\sqrt2}\right\rangle}

Sanity check. Differentiate directly: \frac{d\vec r}{ds}=\left\langle-\frac1{\sqrt2}\sin\frac s{\sqrt2},\,\frac1{\sqrt2}\cos\frac s{\sqrt2},\,\frac1{\sqrt2}\right\rangle, with magnitude \sqrt{\frac12\sin^2\frac s{\sqrt2}+\frac12\cos^2\frac s{\sqrt2}+\frac12}=\sqrt{\frac12+\frac12}=1 — confirmed unit speed. ✓ It also makes sense that a constant-speed curve like this one has a particularly simple reparameterization: t and s are related by a plain constant multiple (s=\sqrt2\,t), rather than some more complicated invertible function — constant original speed is exactly what makes that true.

Your turn

1. For \vec r(t)=\langle3t,4t,0\rangle (a straight line), find the speed and confirm it's constant.

2. Find the arc length of \vec r(t)=\langle3t,4t,0\rangle for t\in[0,2], and use it to find the arc-length parameterization.

3. True or false: every space curve has a well-defined arc-length parameterization, regardless of how its speed behaves.

Solutions

1. \vec r'(t)=\langle3,4,0\rangle, a constant vector, so |\vec r'(t)|=\sqrt{9+16}=\sqrt{25}=\boxed5 — constant, as expected for a straight line traced at a fixed rate.

2. L=\int_0^25\,dt=10. Since speed is the constant 5, s(t)=5t\Rightarrow t=\dfrac s5:

\boxed{\vec r(s)=\left\langle\frac{3s}5,\,\frac{4s}5,\,0\right\rangle}

Check: \left|\left\langle\frac35,\frac45,0\right\rangle\right|=\sqrt{\frac9{25}+\frac{16}{25}}=\sqrt1=1

3. False. The construction requires s(t) to be invertible, which in turn requires speed |\vec r'(t)|\ne0 everywhere (a strictly increasing s(t), by the Fundamental Theorem relationship s'(t)=|\vec r'(t)|>0). A curve with a momentary stop — \vec r'(t_0)=\vec0 for some t_0, exactly §9.4's cusp-or-pause scenario — has s(t) momentarily flat there, which breaks invertibility at that instant. Arc-length parameterization exists wherever the curve is regular (nonzero speed throughout), not universally.

Check yourself in code

For the helix \vec r(t)=\langle\cos t,\sin t,t\rangle, compute the speed |\vec r'(t)| and the arc length over t\in[0,2\pi].

Print exactly this:

speed = sqrt(2)
arc length over [0, 2*pi] = 2*sqrt(2)*pi
import sympy as sp

t = sp.Symbol('t')
r = sp.Matrix([sp.cos(t), sp.sin(t), t])

speed = sp.simplify(sp.sqrt(r.diff(t).dot(r.diff(t))))
print("speed = ...")

L = sp.integrate(speed, (t, 0, 2 * sp.pi))
print("arc length over [0, 2*pi] = ...")
import sympy as sp

t = sp.Symbol('t')
r = sp.Matrix([sp.cos(t), sp.sin(t), t])

speed = sp.simplify(sp.sqrt(r.diff(t).dot(r.diff(t))))
print(f"speed = {speed}")

L = sp.integrate(speed, (t, 0, 2 * sp.pi))
print(f"arc length over [0, 2*pi] = {L}")

Velocity \vec r'(t) and acceleration \vec r''(t) are direct three-dimensional extensions of §2's rates of change, and arc length, \int|\vec r'(t)|\,dt, restates §6.1's formula in vector notation without adding new calculus. The genuinely new idea is arc-length parameterization: trading the parameter t for the distance s already traveled produces a curve traced at guaranteed unit speed, stripping away every question of "how fast" so that only the curve's shape remains — exactly the prerequisite the next lesson's curvature formula is built to exploit.

Next: measuring how sharply a curve bends, and the moving frame of three mutually perpendicular vectors that rides along the curve to track it.