6. Velocity, acceleration, and arc-length parameterization
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.