When a rocket flies past you at half the speed of light and fires a missile forward at half the speed of light, you don't see the missile moving at \(c\) — you see it at \(0.8\,c\). Velocities don't simply add when speeds approach \(c\). Here's the formula that keeps light at \(c\) for every observer, and four animated scenarios that show it in action.
The Setup
Two observers describe the velocity of the same object along the x-axis. Frame \(S\) (the "ground" frame) is at rest. Frame \(S'\) (the "rocket" frame) moves at velocity \(v\) relative to \(S\), in the \(+x\) direction. They both watch a third object moving along \(x\):
The object's velocity in \(S\) is called \(u\) (what the ground sees).
The object's velocity in \(S'\) is called \(u'\) (what the rocket-rider sees).
Einstein's velocity addition formula relates the two:
Low-speed limit. When \(u', v \ll c\), the denominator is \(\approx 1\) and you get \(u \approx u' + v\) — the everyday Galilean rule.
Light is invariant. Plug in \(u' = c\): \(u = (c + v)/(1 + v/c) = c\). Light has the same speed in every frame.
Speed limit holds. No matter how close \(u'\) and \(v\) get to \(c\), the formula keeps \(|u| < c\). The denominator grows just fast enough to choke off the numerator.
Sign convention. Velocities are signed. Negative means motion in the \(-x\) direction.
Solving for \(u'\) — the inverse
Sometimes you know two velocities in the ground frame and want a relative velocity. If you're on Ship 1 (moving at \(v\)) and Ship 2 is moving at \(u\) (both as seen from the ground), what speed does Ship 2 have from your seat? That's \(u'\). We just need to solve the formula above for \(u'\):
Derivation. Start with
$$ u \;=\; \frac{u' + v}{1 + u'v/c^{2}}. $$
Multiply both sides by the denominator to clear the fraction:
$$ u\Bigl(1 + \frac{u'v}{c^{2}}\Bigr) \;=\; u' + v. $$
Distribute on the left:
$$ u \;+\; \frac{u\,u'\,v}{c^{2}} \;=\; u' \;+\; v. $$
Move every \(u'\) to one side and everything else to the other:
$$ u - v \;=\; u' \;-\; \frac{u\,u'\,v}{c^{2}} \;=\; u'\Bigl(1 - \frac{uv}{c^{2}}\Bigr). $$
Notice the symmetry: this is the original equation with the sign of \(v\) flipped. That's exactly what "looking from the rocket's frame instead of the ground" should do — undo the boost \(v\).
So the same formula does double duty:
Forward problem (Scenario A below): use \(u = (u'+v)/(1+u'v/c^{2})\) when you know the velocity inside a moving frame and want what the ground sees.
Inverse problem (Scenario B below): use \(u' = (u-v)/(1-uv/c^{2})\) when you know two ground velocities and want one in the other ship's frame.
About the animations. Real light travels too fast to see, so each canvas uses a "movie speed of light" \(c_\text{movie}\) — the algebra is identical to using the real \(c\); only the time scale is rescaled. Each canvas shows two stacked horizontal frames: the top half is the ground frame \(S\); the bottom half is the rocket / your-ship frame \(S'\). Watch how the same physical ball or ship has different velocities in the two frames.
Scenario A — Rocket throws a ball: solving for \(u\)
Eve floats in deep space, at rest. A rocket flies past her at velocity \(v\). Inside the rocket, the captain throws a ball at velocity \(u'\) (in the rocket's frame). What velocity \(u\) does Eve measure for the ball?
Case A1 — Ball thrown forward (same direction as rocket)
Take \(v = 0.6\,c\) (rocket) and \(u' = +0.8\,c\) (ball, thrown forward in the rocket's frame). Galileo would predict \(u = 0.8c + 0.6c = 1.4c\), faster than light — impossible. Plug into the relativistic formula instead:
Galilean prediction (u' + v): 1.400 c (not allowed)
Speed:
Eve (ground observer)
Rocket (moves at v)
Ball
Galilean "ghost" ball at u'+v
In the ground frame the ball moves at 0.946 c — fast, but still under c. The Galilean ghost ball (red, dashed) sprints ahead at the impossible 1.4 c so you can see how badly classical addition fails. Note the bottom frame (rocket's view): there the ball really does move at +0.8 c relative to the rocket.
Case A2 — Ball thrown backward (opposite direction in rocket's frame)
Same rocket, but now the captain hurls the ball backward: \(v = +0.6\,c\), \(u' = -0.8\,c\). Galileo would say \(u = -0.8c + 0.6c = -0.2c\). The relativistic answer is similar in spirit but slightly different in size:
The ball was thrown hard enough (in the rocket's frame) to be moving backward in the ground frame, even though the rocket itself was moving forward at 0.6 c. Eve sees the ball drift left at 0.385 c — almost twice as fast as the Galilean prediction of 0.2 c. The denominator (1 + u'v/c² = 0.52) is now less than 1, so the formula amplifies the answer instead of suppressing it.
Scenario B — Two ships, one observer: solving for \(u'\)
You're on Ship 1, cruising past Earth at velocity \(v\). Mission control radios that Ship 2 is moving at velocity \(u\) (also relative to Earth). Question: at what speed \(u'\) is Ship 2 approaching (or receding from) you? Use the inverse formula \(u' = (u-v)/(1 - uv/c^{2})\).
Case B1 — Both ships moving in the same direction
Take \(v = +0.6\,c\) (you) and \(u = +0.8\,c\) (Ship 2). Both head the same way; Ship 2 is faster, so it should be slowly pulling ahead. Galileo would say the gap opens at \(u - v = 0.2\,c\). Relativistically:
In the ground frame (top) Ship 2 inches past you at 0.2 c. But "inching" is misleading — both ships are tearing along close to c, so the gap-closing rate in your seated frame is actually 0.385 c, almost double what Galileo would compute. The watching ship really is approaching faster than the ground frame's bare subtraction implies.
Case B2 — Ships moving in opposite directions
Now suppose Ship 2 is heading the other way: \(v = +0.6\,c\) (you, rightward), \(u = -0.8\,c\) (Ship 2, leftward). Galileo would say the closing speed is \(u - v = -1.4\,c\) — a relative speed faster than light. Relativity refuses:
Galilean prediction (u − v): −1.400 c (not allowed)
Speed:
Your ship (Ship 1)
Ship 2
Galilean ghost at u−v (faster than light)
From your seat Ship 2 hurtles past at 0.946 c — frighteningly fast, but still under c. The Galilean ghost (dashed red) zips by at 1.4 c, which would be a relative speed faster than light. Relativity packs a closing speed of nearly 1.4 c into a measurable speed of just 0.946 c.
Key Takeaways
The denominator is the magic. The whole correction lives in \(1 \pm uv/c^{2}\). At everyday speeds \(uv/c^{2} \approx 0\) and you fall back to Galileo. At relativistic speeds it actively suppresses (or amplifies) the numerator.
Same direction: denominator is > 1, so \(u\) is suppressed. Adding two large positive velocities never gets you past \(c\).
Opposite directions: denominator is < 1, so \(|u|\) gets amplified. Cases A2 and B2 show this — the relative speed grows faster than the Galilean subtraction would predict, but still asymptotes to \(c\), never crossing it.
The two formulas are the same equation, solved for different unknowns. Pick whichever variable you don't already know.
"Closing speed" can exceed \(c\) if measured in a third frame (e.g., the ground), but the speed of either ship as measured by the other ship can never reach \(c\). That subtle distinction is exactly what the formula enforces.
In Giancoli §26.7. The same formula generalizes to vector velocities (the components transverse to \(v\) get a separate \(\gamma\) factor), but the 1D version above is the one you'll use 95% of the time.