Monocurl Essays
Series Download

Circular motion, gravity and why the Moon doesn't fall

The acceleration v²/r of circular motion, derived from the velocity triangle, and what it says about satellites, Kepler's third law and weightlessness.

20 min·High school·

AssumesNewton's second law, F = ma: what force really doesProjectile motion: dropped and fired bullets land together

Newton’s cannonball, computed from the inverse-square law of gravity. Four balls are fired horizontally from a tower drawn 640 km high. At 4, 6 and 7 km/s they curve down and land. At 7.54 km/s the ground curves away as fast as the ball falls, and it never comes down. One second of animation is 13 minutes.
Monocurl source
let DT = 10
let Fly = |vkm| {
    var x = 0
    var y = 1.1
    var vx = vkm / 6371
    var vy = 0
    var t = 0
    var out = []
    var going = 1
    while (going) {
        out .= [x, y]
        let r = sqrt(x * x + y * y)
        let hx = vx - GMR * x / (r * r * r) * DT / 2
        let hy = vy - GMR * y / (r * r * r) * DT / 2
        x = x + hx * DT
        y = y + hy * DT
        let q = sqrt(x * x + y * y)
        vx = hx - GMR * x / (q * q * q) * DT / 2
        vy = hy - GMR * y / (q * q * q) * DT / 2
        t = t + DT
        if (q < 1 or t > 5850) {
            going = 0
            out .= [x, y]
        }
    }
    return out
}
let VC = sqrt(GM / (1.1 * RE)) / 1000
let SHOTS = [[Fly(4), PLUM], [Fly(6), EMBER], [Fly(7), GOLD], [Fly(VC), LEAF]]
let EC = [0, -0.15, 0]
let RS = 1.65
let S = |p| [EC[0] + RS * p[0], EC[1] + RS * p[1], 0]
mesh earth = [
    Earth(EC, RS),
    Seg(S([0, 1]), S([0, 1.1]), INK, 5),
    center{EC} Cap("Earth", 0.9, AZURE)
]
mesh legend = [
    center{[1.37, 1.86, 0]} Cap("4 km/s: lands", 0.85, PLUM),
    center{[2.05, 1.25, 0]} Cap("6 km/s: lands", 0.85, EMBER),
    center{[2.6, 0.5, 0]} Cap("7 km/s: lands", 0.85, GOLD),
    center{[-2.72, 0.5, 0]} Cap(str_join([to_string(VC, 2), " km/s: orbits"]), 0.85, LEAF),
    center{[2.7, -1.4, 0]} Note("minutes since firing", 0.8)
]
let Shots = |t| block {
    for (sh in SHOTS) {
        let pts = sh[0]
        let u = clamp(0, t / DT, len(pts) - 1.001)
        let i = to_int(floor(u))
        let q = [lerp(pts[i][0], pts[i + 1][0], u - i), lerp(pts[i][1], pts[i + 1][1], u - i)]
        var trail = []
        for (j in range(0, i + 1)) {
            if (mod(j, 4) == 0) { trail .= S(pts[j]) }
        }
        trail .= S(q)
        if (len(trail) > 2) { . stroke{sh[1], 3} Polyline(trail) }
        . Pt(S(q), sh[1], 0.1)
    }
    . center{[2.7, -1.85, 0]} scale{1.4} color{INK} Number(t / 60, 0)
}
mesh shots = Shots(t: 0)

slide "fire"
    play Wait(0.5)
    shots.t = 5840
    play Lerp(7.5, [&shots], linear)
    play Wait(1.5)

Uses the shared definitions for this lesson's figures.

The Earth pulls on the Moon with a force of about $2 \times 10^{20}$ newtons. Nothing holds the Moon up. So why has it not fallen on us?

The usual answers are that gravity is weak out there, or that some outward force balances it. Both are wrong. The Moon is falling: it has been falling toward the Earth without pause for four billion years, and it gets no closer. To see how that can be, we first have to settle what acceleration means for something moving in a circle.

Changing direction is accelerating

Whirl a puck on a string around a peg on an air table, at a steady speed. Then cut the string.

A 0.2 kg puck on a 0.5 m string, moving at a steady 2 m/s, at half speed. While the string pulls toward the peg (orange) the puck’s velocity (blue) keeps turning. When the string is cut the puck leaves along the tangent, in a straight line at the same speed.
Monocurl source
let PC = [-2.2, -0.5, 0]
let PER = 2.6
let R = 0.5
let SPD = 2
let W = SPD / R
let TC = 1.25 * TAU / W
let TOP = PC + [0, PER * R, 0]
let where = |t| {
    if (t < TC) { return PC + PER * R * dir(PI / 2 + W * (TC - t)) }
    return TOP + [PER * SPD * (t - TC), 0, 0]
}
mesh table = [
    dashed{[0.12, 0.08]} fill{alpha{0} PAPER} stroke{MIST, 2.5} center{PC} Circle(PER * R, 96),
    Pt(PC, SLATE, 0.08),
    Seg(TOP + [0, 0.12, 0], TOP + [0, 0.42, 0], SLATE, 2.5),
    center{TOP + [0, 0.68, 0]} Note("string cut here", 0.74),
    center{[1.55, -0.55, 0]} Cap("pull of the string (N)", 0.74, EMBER),
    center{[1.55, -1.45, 0]} Cap("speed (m/s)", 0.74, AZURE),
    center{[3.2, -1.45, 0]} Math(to_string(SPD, 1), 0.95, AZURE)
]
let Whirl = |t| {
    let p = where(t)
    var out = []
    var vel = [PER * 0.42, 0, 0]
    var pull = 0
    if (t < TC) {
        let a = PI / 2 + W * (TC - t)
        vel = PER * 0.42 * [sin(a), -cos(a), 0]
        pull = 0.2 * SPD * SPD / R
        out .= Seg(PC, p, INK, 2.5)
        out .= Arrow2(p, -0.75 * dir(a), EMBER, 4.5)
    } else {
        out .= Seg(TOP, p, MIST, 2.5)
    }
    out .= Arrow2(p, vel, AZURE, 4.5)
    out .= Pt(p, INK, 0.13)
    out .= center{[3.2, -0.55, 0]} scale{1.2} color{EMBER} Number(pull, 1)
    return out
}
mesh whirl = Whirl(t: 0)

slide "cut"
    play Wait(0.5)
    whirl.t = TC + 0.85
    play Lerp(2 * (TC + 0.85), [&whirl], linear)
    play Wait(1.3)

Uses the shared definitions for this lesson's figures.

The puck does not fly outward from the peg, and it does not keep curving. It goes straight, along the tangent to the circle at the point where it was released. That is Newton’s first law: with no net force, velocity stays constant in size and in direction.

Run the logic backward. While the puck was on the circle its speed was constant and its direction was not, so its velocity, which is a vector, was changing all the time. A changing velocity is an acceleration, and by the second law an acceleration needs a net force. The string supplied it, and the string can only pull toward the peg. Moving in a circle at constant speed is accelerated motion, with the acceleration directed inward.

How large is the acceleration?

Take numbers. A car goes round a circular bend of radius $r = 100$ m at a steady $v = 20$ m/s. In $\Delta t = 0.5$ s it covers 10 m of arc, so the line from the center to the car turns through $10/100 = 0.1$ radians, and the velocity arrow turns through the same angle, since it is always perpendicular to that line. The velocities at the start and end are two arrows of length 20 m/s with $0.1$ rad between them. Their difference $\Delta\vec v$ is the short side of a thin isosceles triangle, of length $2 \times 20 \times \sin(0.05) = 1.999$ m/s. So the average acceleration over that half second has size $1.999/0.5 = 3.998$ m/s².

Pause and try

Repeat the calculation for $\Delta t = 1$ s. Then compare both answers with $v^2/r$.

Show answerHide answer

In 1 s the car covers 20 m of arc and turns through 0.2 rad. $|\Delta\vec v| = 2 \times 20 \times \sin(0.1) = 3.993$ m/s, so the average acceleration is 3.993 m/s². And $v^2/r = 400/100 = 4$ m/s². The shorter the interval, the closer the average is to 4.

The number $v^2/r$ is no accident, and the triangle shows why.

  1. In a time Δt the object moves from one point to another. The two radii and the chord Δs between the points make an isosceles triangle with angle Δθ.
  2. The velocity at each point is tangent to the circle, perpendicular to the radius there. The two velocities have the same length v.
  3. Draw the two velocities from one point. Each is a quarter turn from its radius, so the angle between them is the same Δθ. The change in velocity closes the triangle.
  4. Two isosceles triangles with the same angle are similar, so their sides are in proportion.
  5. Shrink the time. The chord approaches the arc, of length vΔt, and the change in velocity turns to point at the center. Dividing by Δt gives v²/r.
An object moving at constant speed on a circle, at two moments. The triangle made by the two radii and the triangle made by the two velocities have the same shape, and that gives the acceleration.
Monocurl source
let C = [-2.05, -0.45, 0]
let R = 1.6
let A0 = deg_to_rad(18)
let VL = 0.95
let Q = [2.95, -1.75, 0]
let K = 1.55
let Tri = |dth, stage| {
    let p1 = C + R * dir(A0)
    let p2 = C + R * dir(A0 + dth)
    let t1 = [-sin(A0), cos(A0), 0]
    let t2 = [-sin(A0 + dth), cos(A0 + dth), 0]
    let mid = A0 + dth / 2
    var out = [
        Seg(C, p1, SLATE, 3), Seg(C, p2, SLATE, 3),
        stroke{SLATE, 2.5} Angle(C, p1, p2, 0.5),
        center{C + 0.55 * R * dir(A0) + [0.1, -0.24, 0]} Math("r", 0.85, SLATE),
        Seg(p1, p2, LEAF, 4.5),
        center{C + (R * cos(dth / 2) - 0.3) * dir(mid)} Math("\Delta s", 0.76, LEAF),
        Pt(p1, INK, 0.09), Pt(p2, INK, 0.09)
    ]
    if (dth > 0.5) {
        out .= center{C + 0.78 * dir(mid)} Math("\Delta\theta", 0.76, SLATE)
    }
    if (stage >= 2) {
        out .= Arrow2(p1, VL * t1, AZURE, 4.5)
        out .= Arrow2(p2, VL * t2, AZURE, 4.5)
        out .= center{p1 + VL * t1 + [0.32, 0, 0]} Math("\vec v_1", 0.82, AZURE)
        out .= center{p2 + VL * t2 + [0.05, 0.28, 0]} Math("\vec v_2", 0.82, AZURE)
    }
    if (stage >= 3) {
        out .= stroke{SLATE, 2.5} Angle(Q, Q + t1, Q + t2, 0.6)
        if (dth > 0.5) {
            out .= center{Q + 0.92 * [-sin(mid), cos(mid), 0]} Math("\Delta\theta", 0.76, SLATE)
        }
        out .= Arrow2(Q, K * VL * t1, AZURE, 4.5)
        out .= Arrow2(Q, K * VL * t2, AZURE, 4.5)
        out .= Arrow2(Q + K * VL * t1, K * VL * (t2 - t1), EMBER, 4.5)
        out .= center{Q + K * VL * t1 + [0.34, 0.1, 0]} Math("\vec v_1", 0.82, AZURE)
        out .= center{Q + K * VL * t2 + [-0.3, -0.2, 0]} Math("\vec v_2", 0.82, AZURE)
        out .= center{Q + K * VL * 0.5 * (t1 + t2) + 0.38 * [-sin(mid), cos(mid), 0]} Math("\Delta\vec v", 0.82, EMBER)
    }
    return out
}
mesh circle = [
    fill{alpha{0} PAPER} stroke{MIST, 3} center{C} Circle(R, 96),
    Pt(C, SLATE, 0.06)
]
mesh tri = []
mesh rows = []

slide "In a time Δt the object moves from one point to another. The two radii and the chord Δs between the points make an isosceles triangle with angle Δθ."
    tri = Tri(dth: deg_to_rad(44), 1)
    rows = [
        center{[2.35, 0.75, 0]} Note("angle turned in time Δt", 0.74),
        center{[2.35, 0.05, 0]} Math("\Delta\theta = \frac{v\,\Delta t}{r}", 0.92)
    ]
    play Fade(0.8)

slide "The velocity at each point is tangent to the circle, perpendicular to the radius there. The two velocities have the same length v."
    tri = Tri(dth: deg_to_rad(44), 2)
    play Fade(0.8)

slide "Draw the two velocities from one point. Each is a quarter turn from its radius, so the angle between them is the same Δθ. The change in velocity closes the triangle."
    rows = []
    play Fade(0.3, [&rows])
    tri = Tri(dth: deg_to_rad(44), 3)
    play Fade(0.8, [&tri])

slide "Two isosceles triangles with the same angle are similar, so their sides are in proportion."
    rows = [center{[2.3, 1.65, 0]} Math("\frac{|\Delta\vec v|}{v} = \frac{\Delta s}{r}", 0.92)]
    play Fade(0.6, [&rows])

slide "Shrink the time. The chord approaches the arc, of length vΔt, and the change in velocity turns to point at the center. Dividing by Δt gives v²/r."
    tri.dth = deg_to_rad(12)
    play Lerp(2, [&tri])
    rows .= center{[2.3, 0.65, 0]} Math("a = \frac{|\Delta\vec v|}{\Delta t} \to \frac{v^2}{r}", 0.92, EMBER)
    play Fade(0.6, [&rows])

Uses the shared definitions for this lesson's figures.

The word centripetal means “center-seeking”. Check the units: $(\text{m/s})^2/\text{m} = \text{m/s}^2$. This is the fact that the lesson on energy borrowed for the loop-the-loop.

“Centripetal force” names a requirement on the net force, and some ordinary force has to meet it. No extra arrow goes on the diagram. The requirement is met by the string’s tension for the puck ($0.2 \times 2^2/0.5 = 1.6$ N), friction from the road for a car on a level bend, the track’s push for a roller coaster. For a satellite, it is gravity.

Newton’s cannonball

Now the Moon. Newton’s way in was a thought experiment. Stand on a very high mountain, above the air, and fire a cannonball horizontally. It is a projectile: it keeps its horizontal velocity and falls from the line of fire by $\tfrac12 gt^2$. Fire it faster and it lands farther away. But the Earth is round, so the ground also falls away from the line of fire.

Pause and try

The ball falls 4.9 m below its line of fire in the first second. The Earth’s radius is $R = 6370$ km. Over what horizontal distance $d$ does the Earth’s surface drop 4.9 m below a horizontal line? (Use the right triangle with sides $R$ and $d$ and hypotenuse $R + h$, and neglect $h^2$.) What does that suggest about a ball fired at $d$ meters per second?

Show answerHide answer

$(R + h)^2 = R^2 + d^2$ gives $2Rh + h^2 = d^2$, and since $h$ is tiny compared with $R$, $d^2 \approx 2Rh = 2 \times 6.37 \times 10^6 \times 4.9$, so $d = 7900$ m. A ball fired at 7.9 km/s has, after one second, fallen 4.9 m and traveled 7.9 km, and the ground has dropped away by the same 4.9 m. The ball is no closer to the ground than when it started.

The geometry of the cannonball, not to scale. In the time the ball travels a distance d along its line of fire, it falls by h. If the Earth's surface drops by the same h over that distance, the ball stays at a constant height.
The geometry of the cannonball, not to scale. In the time the ball travels a distance $d$ along its line of fire, it falls by $h$. If the Earth’s surface drops by the same $h$ over that distance, the ball stays at a constant height.
Monocurl source
let O = [-1.2, -6.0, 0]
let RR = 6.2
let T0 = O + [0, RR, 0]
let DX = 3.2
let SP = O + [DX, sqrt(RR * RR - DX * DX), 0]
let D = T0 + [DX, 0, 0]
mesh earth = [
    Earth(O, RR, 400),
    center{[-2.9, -1.2, 0]} Cap("Earth", 0.8, AZURE)
]
mesh geom = [
    Dash(T0, [T0[0], -2.2, 0], SLATE, 2.5),
    Dash(SP, O + 0.61 * (SP - O), SLATE, 2.5),
    center{T0 + [0.25, -1.2, 0]} Math("R", 0.9, SLATE),
    center{SP + [-0.1, -0.62, 0]} Math("R", 0.9, SLATE),
    Arrow2(T0, [DX, 0, 0], AZURE, 4.5),
    center{T0 + [DX / 2, 0.3, 0]} Math("d = vt", 0.9, AZURE),
    Arrow2(D, SP - D, EMBER, 4.5),
    center{D + [0.95, (SP[1] - D[1]) / 2, 0]} Math("h = \frac{1}{2}gt^2", 0.85, EMBER),
    Pt(T0, INK, 0.1), Pt(SP, INK, 0.1)
]
mesh rows = [
    center{[-2.6, 1.85, 0]} Note("the ground's drop", 0.74),
    center{[-2.6, 1.25, 0]} Math("h \approx \frac{d^2}{2R}", 0.88),
    center{[0.3, 1.85, 0]} Note("the ball's fall", 0.74),
    center{[0.3, 1.25, 0]} Math("h = \frac{1}{2}gt^2", 0.88, EMBER),
    center{[2.9, 1.85, 0]} Note("equal when", 0.74),
    center{[2.9, 1.25, 0]} Math("v = \sqrt{gR}", 0.9, LEAF)
]

Uses the shared definitions for this lesson's figures.

In general, set the ground’s drop $d^2/2R$, with $d = vt$, equal to the ball’s fall $\tfrac12 gt^2$: the $t^2$ cancels and $v^2 = gR$. The speed for skimming the surface forever is

$$ v = \sqrt{gR} = \sqrt{9.8 \times 6.37 \times 10^6} = 7.9 \text{ km/s}. $$

The centripetal theorem gives this in one line and without the small-$h$ approximation. A ball circling at radius $R$ needs acceleration $v^2/R$ toward the center. Gravity supplies an acceleration $g$ toward the center. So $v^2/R = g$. The two arguments are the same idea: an orbit is free fall in which the falling is entirely used up in turning. The opening animation shows it happening, with the paths computed from the law of gravity.

Gravity far from the ground

The Moon is far from skimming the surface: it is 384 000 km away, about 60 Earth radii, and takes 27.3 days to go round. If gravity out there were the same 9.8 m/s² as here, the Moon would need a speed of $\sqrt{9.8 \times 3.84 \times 10^8} = 61$ km/s. Its actual speed is about 1 km/s. So gravity must be much weaker at the Moon’s distance. How much weaker?

Pause and try

Compute the Moon’s centripetal acceleration from $a = 4\pi^2 r/T^2$, with $r = 3.84 \times 10^8$ m and $T = 27.3$ days $= 2.36 \times 10^6$ s. Compare it with $g = 9.8$ m/s². Then compare the ratio with the ratio of the distances from the Earth’s center, 60 to 1.

Show answerHide answer

$a = 4\pi^2 \times 3.84 \times 10^8 / (2.36 \times 10^6)^2 = 0.00272$ m/s². That is $9.8/0.00272 = 3600$ times smaller than $g$, and $3600 = 60^2$. At 60 times the distance, gravity’s acceleration is $60^2$ times weaker.

Newton made this comparison in the 1660s and found that the numbers “answer pretty nearly”. It is the evidence for an inverse-square law, which he then stated for all matter.

This is an experimental law. It is extremely accurate for planets, moons and spacecraft, and it is corrected by Einstein’s general relativity where gravity is very strong or precision is extreme. Dividing the force on a mass $m$ by $m$, the acceleration due to a planet of mass $M$ at distance $r$ from its center is $GM/r^2$. For the Earth, $M = 5.972 \times 10^{24}$ kg, so $GM = 3.986 \times 10^{14}$ m³/s², and at the surface $GM/R^2 = 9.8$ m/s², as it must be.

The acceleration due to the Earth's gravity against distance from the Earth's center, with four places marked. At the height of the space station gravity is still 89% of its surface value.
The acceleration due to the Earth’s gravity against distance from the Earth’s center, with four places marked. At the height of the space station gravity is still 89% of its surface value.
Monocurl source
let fgv = Frame(1, 7, 0, 10.5, [0.1, 0.2, 0], 6.2, 2.9)
let grav = |x| GM / (x * RE * x * RE)
let SPOTS = [[1, "surface", 0.95, 0.02], [1.063, "space station (400 km up)", 1.75, -0.05], [4.17, "GPS satellites", 0, 0.25], [6.62, "geostationary", -0.1, 0.25]]
mesh plot = Panel(fgv, [2, 3, 4, 5, 6, 7], [2, 4, 6, 8], [1, 2, 3, 4, 5, 6, 7], [0, 2, 4, 6, 8, 10], "distance from the center of the Earth (Earth radii)", "acceleration due to gravity (m/s²)")
mesh curve = Graph(fgv, grav, 1, 7, AZURE, 4, 120)
mesh spots = block {
    for (sp in SPOTS) {
        let p = at(fgv, sp[0], grav(sp[0]))
        . Pt(p, EMBER, 0.09)
        . center{p + [sp[2], sp[3], 0]} Cap(str_join([sp[1], ": ", to_string(grav(sp[0]), 2)]), 0.72, EMBER)
    }
}

Uses the shared definitions for this lesson's figures.

Orbits: speed, period and Kepler’s third law

Put the two results together for a satellite of mass $m$ in a circular orbit of radius $r$ around a planet of mass $M$. The only force on it is gravity, toward the planet’s center, and that must be the centripetal force:

$$ \frac{GMm}{r^2} = \frac{mv^2}{r}. $$

The satellite’s mass has canceled, so a bolt and a space station at the same radius orbit side by side. There is no freedom in the speed: each radius has exactly one speed for a circular orbit, lower for larger orbits. (The assumption $M \gg m$ lets us treat the planet’s center as fixed. When the masses are comparable both bodies circle their center of mass.)

Johannes Kepler found the $T^2 \propto r^3$ rule in 1619 by staring at planetary data, with no dynamical explanation for why it held. With the Sun as the central body and units of years and astronomical units (the Earth’s orbital radius), the constant is 1, and the law says $T^2 = r^3$.

Kepler's third law for the four inner planets, whose orbits are nearly circular. With the period T in years and the orbit radius r in astronomical units, the points lie on the line T^2 = r^3.
Kepler’s third law for the four inner planets, whose orbits are nearly circular. With the period $T$ in years and the orbit radius $r$ in astronomical units, the points lie on the line $T^2 = r^3$.
Monocurl source
let fk = Frame(0, 4, 0, 4, [-1.5, 0.2, 0], 3.6, 2.9)
let PLANETS = [["Mercury", 0.387, 0.241], ["Venus", 0.723, 0.615], ["Earth", 1, 1], ["Mars", 1.524, 1.881]]
mesh plot = Panel(fk, [1, 2, 3, 4], [1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], "radius cubed (AU³)", "period squared (years²)")
mesh line = Seg(at(fk, 0, 0), at(fk, 4, 4), AZURE, 3)
mesh pts = map(PLANETS, |p| Pt(at(fk, p[1] ^ 3, p[2] * p[2]), EMBER, 0.09))
mesh table = block {
    . center{[2.7, 1.75, 0]} Math("r^3", 0.85, SLATE)
    . center{[3.45, 1.75, 0]} Math("T^2", 0.85, SLATE)
    for ([i, p] in enumerate(PLANETS)) {
        . center{[1.6, 1.15 - 0.7 * i, 0]} Cap(p[0], 0.76, EMBER)
        . center{[2.7, 1.15 - 0.7 * i, 0]} Math(to_string(p[1] ^ 3, 3), 0.82)
        . center{[3.45, 1.15 - 0.7 * i, 0]} Math(to_string(p[2] * p[2], 3), 0.82)
    }
}

Uses the shared definitions for this lesson's figures.

Three satellites in circular orbits around the Earth, each moving at the speed $\sqrt{GM/r}$ for its radius. The outermost takes one sidereal day, the same as the Earth’s rotation, so it stays over the marked point on the equator. One second of animation is three hours.
Monocurl source
let EC = [-1.75, 0, 0]
let RS = 0.3
let SATS = [[2, EMBER], [4.17, PLUM], [6.618, LEAF]]
let period = |x| TAU * sqrt((x * RE) ^ 3 / GM)
let DAY = period(6.618)
mesh orbits = block {
    for (st in SATS) {
        . fill{alpha{0} PAPER} stroke{MIST, 2} center{EC} Circle(RS * st[0], 96)
    }
    . center{[1.15, 1.6, 0]} Note("radius (R)", 0.72)
    . center{[2.2, 1.6, 0]} Note("period (h)", 0.72)
    . center{[3.35, 1.6, 0]} Note("speed (km/s)", 0.72)
    for ([i, st] in enumerate(SATS)) {
        . center{[1.15, 1.0 - 0.6 * i, 0]} Math(to_string(st[0], 1), 0.85, st[1])
        . center{[2.2, 1.0 - 0.6 * i, 0]} Math(to_string(period(st[0]) / 3600, 1), 0.85, st[1])
        . center{[3.35, 1.0 - 0.6 * i, 0]} Math(to_string(sqrt(GM / (st[0] * RE)) / 1000, 1), 0.85, st[1])
    }
    . center{[1.9, -1.2, 0]} Note("hours elapsed", 0.74)
}
let Sky = |t| block {
    let spin = TAU * t / DAY
    . Dash(EC, EC + RS * 6.618 * dir(spin), MIST, 2)
    . Earth(EC, RS)
    . Pt(EC + RS * dir(spin), INK, 0.06)
    for (st in SATS) {
        . Pt(EC + RS * st[0] * dir(TAU * t / period(st[0])), st[1], 0.1)
    }
    . center{[3.2, -1.2, 0]} scale{1.2} color{INK} Number(t / 3600, 1)
}
mesh sky = Sky(t: 0)

slide "day"
    play Wait(0.5)
    sky.t = DAY
    play Lerp(8, [&sky], linear)
    play Wait(1.2)

Uses the shared definitions for this lesson's figures.

Worked examples

Weightlessness

Astronauts on the space station float. The tempting explanation is that there is no gravity up there, but the graph above says otherwise: at 400 km, gravity’s acceleration is 8.7 m/s², 89% of its value on the ground. If it were absent the station would leave along a tangent.

What you feel as your weight is the floor pushing up on you; gravity itself, acting equally on every part of you, cannot be felt. Stand on a bathroom scale: the scale reads the normal force $N$ it exerts on you. At rest, $N - mg = 0$, so it reads $mg$. In an elevator accelerating downward at $a$, $mg - N = ma$, so it reads $m(g - a)$, less than your weight. If the cable snapped and the elevator fell freely, $a = g$ and the scale would read zero.

A 70 kg person on a scale, on the ground and in the space station. On the ground the scale pushes up with 686 N. In orbit gravity still pulls with 609 N, but the person, the scale and the station all fall together, so nothing presses on anything and the scale reads zero. The green arrow is the acceleration they share.
A 70 kg person on a scale, on the ground and in the space station. On the ground the scale pushes up with 686 N. In orbit gravity still pulls with 609 N, but the person, the scale and the station all fall together, so nothing presses on anything and the scale reads zero. The green arrow is the acceleration they share.
Monocurl source
let Person = |p, k| [
    Box(p + [0, 0.55 * k, 0], [0.42 * k, 0.8 * k], SLATE, 0.3, 2.5),
    Disc(p + [0, 1.15 * k, 0], 0.19 * k, SLATE, 0.3, 2.5),
    Box(p + [0, 0.06 * k, 0], [0.75 * k, 0.12 * k], SLATE, 0.5, 2)
]
let K = 1.8
let LG = [-2.0, -1.7, 0]
let RG = [1.6, -1.6, 0]
mesh ground = [
    Seg([-3.75, LG[1], 0], [-0.7, LG[1], 0], SLATE, 3.5),
    Person(LG, K),
    Arrow2(LG + [-0.8, 1.55, 0], [0, -1.3, 0], EMBER, 5.5),
    Arrow2(LG + [0.8, 0.22, 0], [0, 1.3, 0], AZURE, 5.5),
    center{LG + [-0.95, 1.85, 0]} Math("686\text{ N}", 0.82, EMBER),
    center{LG + [0.95, 1.82, 0]} Math("686\text{ N}", 0.82, AZURE),
    center{[-2.0, 1.85, 0]} Cap("on the ground", 0.78, SLATE),
    center{[-2.0, 1.35, 0]} Math("N = mg", 0.88, AZURE)
]
mesh orbit = [
    fill{tint(SLATE, 0.07)} stroke{SLATE, 3} center{[1.6, -0.475, 0]} Rect([2.9, 2.95]),
    Person(RG, K),
    Arrow2(RG + [-0.8, 1.5, 0], [0, -1.3 * 609 / 686, 0], EMBER, 5.5),
    center{RG + [-0.9, 1.8, 0]} Math("609\text{ N}", 0.82, EMBER),
    Arrow2([3.5, 0.5, 0], [0, -1.3, 0], LEAF, 5.5),
    center{[3.5, -1.15, 0]} Math("8.7", 0.8, LEAF),
    center{[3.5, -1.5, 0]} Math("\text{m/s}^2", 0.76, LEAF),
    center{[1.6, 1.85, 0]} Cap("in orbit, 400 km up", 0.78, SLATE),
    center{[1.6, 1.35, 0]} Math("N = 0", 0.88, AZURE)
]
mesh divider = Seg([-0.3, -1.95, 0], [-0.3, 2.0, 0], MIST, 2)

Uses the shared definitions for this lesson's figures.

An orbit is that free fall, continued indefinitely. The station and everything in it have the same acceleration, $GM/r^2$ toward the Earth, so the floor never has to push on the astronaut’s feet. In symbols, the astronaut needs net force $mv^2/r$, gravity supplies $GMm/r^2$, and for the orbit these are equal, leaving $N = 0$. Weightlessness is the absence of the supporting force. Gravity is fully present.

Limits and common mistakes

Everything here assumed circles. Real orbits are ellipses, of which the circle is a special case; Kepler’s third law survives with the radius replaced by half the long axis of the ellipse, a result we are citing. The cannonballs that landed in the first animation were on ellipses that happened to intersect the ground. The formula $a = v^2/r$ holds at each instant even when the speed is changing, but then it gives only the part of the acceleration perpendicular to the velocity, and there is another part along it.

Check yourself

A satellite in a circular orbit is moved to a new circular orbit with four times the radius. What happens to its speed and its period?

Problems

Use $g = 9.8$ m/s², $G = 6.674 \times 10^{-11}$ N·m²/kg², and for the Earth $M = 5.97 \times 10^{24}$ kg, $GM = 3.986 \times 10^{14}$ m³/s², $R = 6.371 \times 10^6$ m.

Problem 1

A 1200 kg car rounds a level bend of radius 50 m at 15 m/s. Find its acceleration, the force required and what supplies it, and the smallest coefficient of static friction that will do.

Show solutionHide solution

$a = v^2/r = 225/50 = 4.5$ m/s², toward the center of the bend. Force: $ma = 1200 \times 4.5 = 5400$ N, supplied by static friction between the tires and the road. Friction can be at most $\mu_s mg$, so we need $\mu_s \ge a/g = 4.5/9.8 = 0.46$.

Problem 2

A bucket of water is swung in a vertical circle of radius 0.9 m. What is the least speed at the top of the circle for which the water stays in the bucket? Why does it not fall out, given that gravity pulls it down and nothing holds it up?

Show solutionHide solution

At the top the water moves on a circle, so it needs acceleration $v^2/r$ downward, toward the center. The forces on it are gravity $mg$ and the push $N$ of the bucket’s bottom, both downward: $mg + N = mv^2/r$. The bucket can only push, so $N \ge 0$, which requires $v^2/r \ge g$: $v \ge \sqrt{gr} = \sqrt{9.8 \times 0.9} = 2.97$ m/s. The water is falling: at the least speed it is in free fall, accelerating downward at $g$. The bucket is accelerating downward just as fast, so the water does not leave it. Faster than that, the water would fall less steeply than the bucket turns, and the bucket has to push it down.

Problem 3

The Moon orbits at $r = 3.84 \times 10^8$ m with period 27.3 days. Using only these numbers and $G$, find the Moon’s speed and the mass of the Earth.

Show solutionHide solution

$T = 27.3 \times 86\,400 = 2.36 \times 10^6$ s. Speed: $v = 2\pi r/T = 2\pi \times 3.84 \times 10^8/2.36 \times 10^6 = 1020$ m/s. From $T^2 = 4\pi^2 r^3/GM$: $M = \dfrac{4\pi^2 r^3}{G T^2} = \dfrac{39.48 \times (3.84 \times 10^8)^3}{6.674 \times 10^{-11} \times (2.36 \times 10^6)^2} = 6.0 \times 10^{24}$ kg. An orbit weighs the body at its center. The mass of the Moon itself does not enter, and cannot be found this way.

Problem 4

Jupiter orbits the Sun at 5.20 astronomical units. Use Kepler’s third law to find its period in years. Then explain why you could not find the period of the Moon around the Earth from the same formula $T^2 = r^3$.

Show solutionHide solution

In years and astronomical units $T^2 = r^3$ for bodies orbiting the Sun, so $T = 5.20^{3/2} = 11.9$ years. The constant in $T^2 = (4\pi^2/GM)\,r^3$ contains the mass $M$ of the central body. It equals 1 in these units only when $M$ is the Sun’s mass. The Moon orbits the Earth, whose mass is 333 000 times smaller, so the constant is different: Kepler’s law compares satellites of the same central body.

Problem 5

A student says: “The astronauts on the space station are weightless, so gravity must be zero there. And since gravity is zero, no force acts on the station.” Find two errors, and compute the gravitational force on a 70 kg astronaut 400 km above the surface.

Show solutionHide solution

First error: weightlessness means the supporting force is zero, not gravity. Gravity’s acceleration at $r = 6.771 \times 10^6$ m is $GM/r^2 = 3.986 \times 10^{14}/(6.771 \times 10^6)^2 = 8.69$ m/s², so the force on the astronaut is $70 \times 8.69 = 609$ N, against 686 N on the ground. Second error: with no force the station would obey the first law and move in a straight line at constant speed, leaving the Earth along a tangent. It moves in a circle, so a net force toward the center must act on it, and gravity is that force.

Problem 6

Mars has mass $6.42 \times 10^{23}$ kg and radius 3390 km, and rotates once in 88 600 s. Find the radius and altitude of a “stationary” orbit above the Martian equator, and the satellite’s speed.

Show solutionHide solution

$GM = 6.674 \times 10^{-11} \times 6.42 \times 10^{23} = 4.285 \times 10^{13}$ m³/s². $r = \left(GM\,T^2/4\pi^2\right)^{1/3} = \left(4.285 \times 10^{13} \times (8.86 \times 10^4)^2/39.48\right)^{1/3} = (8.52 \times 10^{21})^{1/3} = 2.04 \times 10^7$ m, which is 20 400 km from the center and 17 000 km above the surface. Speed: $2\pi r/T = 2\pi \times 2.04 \times 10^7/8.86 \times 10^4 = 1450$ m/s. Check with $\sqrt{GM/r} = \sqrt{4.285 \times 10^{13}/2.04 \times 10^7} = 1450$ m/s.

Problem 7

Show that the period of a satellite skimming the surface of a uniform spherical planet depends only on the planet’s density $\rho$, and not on its size: $T = \sqrt{3\pi/(G\rho)}$. Evaluate it for the Earth ($\rho = 5510$ kg/m³). What does the result say about a small asteroid of the same density?

Show solutionHide solution

For an orbit at the surface, $r = R$ and $T^2 = 4\pi^2 R^3/(GM)$. A uniform sphere has $M = \rho \cdot \tfrac43\pi R^3$, so $T^2 = \dfrac{4\pi^2 R^3}{G\rho\,\tfrac43\pi R^3} = \dfrac{3\pi}{G\rho}$, and the radius has canceled. For the Earth: $T = \sqrt{3\pi/(6.674 \times 10^{-11} \times 5510)} = \sqrt{2.563 \times 10^7} = 5060$ s, about 84 minutes. An asteroid of the same density, however small, also has an 84 minute surface orbit. Its orbital speed $2\pi R/T$ is proportionally smaller: around a rock 1 km in radius it is 1.2 m/s, a walking pace.

Problem 8

The lesson derived $a = v^2/r$ from similar triangles. Here is a check that uses the quantitative step of the proof. A point moves at 10 m/s on a circle of radius 5 m. (a) Find $\Delta\theta$ for $\Delta t = 0.1$ s, the exact $|\Delta\vec v|$, and the average acceleration. (b) By what percentage does the average differ from $v^2/r$? (c) How small must $\Delta\theta$ be for the difference to be under 0.1%, given that $\sin x/x \approx 1 - x^2/6$ for small $x$?

Show solutionHide solution

(a) $\Delta\theta = v\,\Delta t/r = 10 \times 0.1/5 = 0.2$ rad. $|\Delta\vec v| = 2v\sin(\Delta\theta/2) = 20\sin(0.1) = 1.9967$ m/s. Average acceleration: $1.9967/0.1 = 19.967$ m/s². (b) $v^2/r = 100/5 = 20$ m/s². The average is low by $0.033/20 = 0.17\%$, in agreement with the factor $\sin(0.1)/0.1 = 0.99833$. (c) We need $1 - \sin x/x \approx x^2/6 < 0.001$ with $x = \Delta\theta/2$, so $x < \sqrt{0.006} = 0.077$ rad and $\Delta\theta < 0.155$ rad, about $9°$.

Shared definitions used by this lesson's figures
# house kit: prepended to every essay figure after the std imports

# palette. AZURE and EMBER are the two actors, LEAF marks an answer, ROSE a problem
let PAPER = [1, 1, 1, 1]
let INK = [0.08, 0.09, 0.11, 1]
let SLATE = [0.40, 0.44, 0.50, 1]
let MIST = [0.85, 0.86, 0.88, 1]
let AZURE = [0.13, 0.42, 0.68, 1]
let EMBER = [0.89, 0.42, 0.12, 1]
let LEAF = [0.13, 0.55, 0.36, 1]
let ROSE = [0.78, 0.22, 0.24, 1]
let PLUM = [0.47, 0.30, 0.66, 1]
let GOLD = [0.85, 0.62, 0.08, 1]

background = PAPER

# an opaque pastel of col; use for fills so overlaps do not darken
let tint = |col, amount = 0.18| [
    1 - (1 - col[0]) * amount,
    1 - (1 - col[1]) * amount,
    1 - (1 - col[2]) * amount,
    1
]

# text: Cap for labels, Note for quiet labels, Math for typeset maths
let Cap = |txt, size = 0.75, col = INK| color{col} Text(txt, size, "Charter")
let Note = |txt, size = 0.65| color{SLATE} Text(txt, size, "Charter")
let Math = |tex, size = 0.9, col = INK| color{col} Tex(tex, size)

# a paper rectangle to sit behind text that crosses lines
let Plate = |pos, size| center{pos} fill{PAPER} stroke{alpha{0} PAPER, 0} Rect(size)

# shapes with fill and stroke both set, so no stray black appears
let Pt = |pos, col = INK, r = 0.075| center{pos} fill{col} stroke{col, 1} Circle(r, 48)
let Ring = |pos, col = INK, r = 0.1, w = 3| center{pos} fill{PAPER} stroke{col, w} Circle(r, 48)
let Seg = |a, b, col = INK, w = 3| stroke{col, w} Line(a, b)
let Path = |pts, col = INK, w = 3| stroke{col, w} Polyline(pts)
let Region = |pts, col| fill{col} stroke{alpha{0} col, 0} Polygon(pts)
let Outline = |pts, col = INK, w = 3| fill{alpha{0} PAPER} stroke{col, w} Polygon(pts)
let Shape = |pts, col, amount = 0.18, w = 3| fill{tint(col, amount)} stroke{col, w} Polygon(pts)
let Disc = |pos, r, col, amount = 0.18, w = 3| center{pos} fill{tint(col, amount)} stroke{col, w} Circle(r, 96)
let Box = |pos, size, col, amount = 0.18, w = 3| center{pos} fill{tint(col, amount)} stroke{col, w} Rect(size)
# a line from a to b ending in a small solid arrowhead
let Tip = |a, b, col = INK, w = 3, head = 0.17| {
    let d = normalize([b[0] - a[0], b[1] - a[1], 0])
    let n = [-d[1], d[0], 0]
    let base = [b[0] - d[0] * head, b[1] - d[1] * head, 0]
    return [
        stroke{col, w} Line(a, base),
        fill{col} stroke{col, 1} Polygon([
            b,
            [base[0] + n[0] * head * 0.42, base[1] + n[1] * head * 0.42, 0],
            [base[0] - n[0] * head * 0.42, base[1] - n[1] * head * 0.42, 0]
        ])
    ]
}

# plots. a frame is [x0, x1, y0, y1, centre, width, height]: a data window and the scene box it fills
let Frame = |x0, x1, y0, y1, c = [0, 0, 0], w = 6.4, h = 3.6| [x0, x1, y0, y1, c, w, h]
let fx = |fr, x| fr[4][0] + (x - (fr[0] + fr[1]) / 2) * fr[5] / (fr[1] - fr[0])
let fy = |fr, y| fr[4][1] + (y - (fr[2] + fr[3]) / 2) * fr[6] / (fr[3] - fr[2])
let at = |fr, x, y| [fx(fr, x), fy(fr, y), 0]

# axes through the data origin (or the nearest edge of the window), with optional names
let Axes = |fr, x_name = "", y_name = "", col = SLATE| {
    let ox = clamp(fr[0], 0, fr[1])
    let oy = clamp(fr[2], 0, fr[3])
    var parts = [
        Tip(at(fr, fr[0], oy), [fx(fr, fr[1]) + 0.25, fy(fr, oy), 0], col, 2.5, 0.15),
        Tip(at(fr, ox, fr[2]), [fx(fr, ox), fy(fr, fr[3]) + 0.25, 0], col, 2.5, 0.15)
    ]
    if (x_name != "") {
        parts .= center{[fx(fr, fr[1]) + 0.5, fy(fr, oy), 0]} Math(x_name, 0.8, col)
    }
    if (y_name != "") {
        parts .= center{[fx(fr, ox), fy(fr, fr[3]) + 0.5, 0]} Math(y_name, 0.8, col)
    }
    return parts
}

# tick marks with numbers at the listed data values
let XTicks = |fr, xs, col = SLATE, places = 0| block {
    let oy = fy(fr, clamp(fr[2], 0, fr[3]))
    for (x in xs) {
        . Seg([fx(fr, x), oy - 0.07, 0], [fx(fr, x), oy + 0.07, 0], col, 2)
        . center{[fx(fr, x), oy - 0.33, 0]} Math(to_string(x, places), 0.72, col)
    }
}
let YTicks = |fr, ys, col = SLATE, places = 0| block {
    let ox = fx(fr, clamp(fr[0], 0, fr[1]))
    for (y in ys) {
        . Seg([ox - 0.07, fy(fr, y), 0], [ox + 0.07, fy(fr, y), 0], col, 2)
        . center{[ox - 0.36, fy(fr, y), 0]} Math(to_string(y, places), 0.72, col)
    }
}

# faint grid lines at the listed data values
let GridLines = |fr, xs, ys, col = MIST| block {
    for (x in xs) {
        . Seg(at(fr, x, fr[2]), at(fr, x, fr[3]), col, 1.5)
    }
    for (y in ys) {
        . Seg(at(fr, fr[0], y), at(fr, fr[1], y), col, 1.5)
    }
}

# the graph of f over [a, b], drawn in the frame. values are clamped to the window
let Graph = |fr, f, a, b, col = AZURE, w = 4, n = 160|
    stroke{col, w} Polyline(map(sample(a, b, n), |x| at(fr, x, clamp(fr[2], f(x), fr[3]))))

# the region between the graph of f and the x axis over [a, b]
let AreaUnder = |fr, f, a, b, col = AZURE, amount = 0.2, n = 80| {
    var pts = [at(fr, a, 0)]
    for (x in sample(a, b, n)) {
        pts .= at(fr, x, clamp(fr[2], f(x), fr[3]))
    }
    pts .= at(fr, b, 0)
    return fill{tint(col, amount)} stroke{alpha{0} col, 0} Polygon(pts)
}

# plot furniture: grid, left and bottom edges, numbers along the edges, names
let Panel = |f, gx, gy, lx, ly, xname, title, col = SLATE| block {
    . GridLines(f, gx, gy)
    . Path([at(f, f[0], f[3]), at(f, f[0], f[2]), at(f, f[1], f[2])], SLATE, 2.5)
    for (x in lx) {
        . center{[fx(f, x), fy(f, f[2]) - 0.3, 0]} Math(to_string(x), 0.72, SLATE)
    }
    for (y in ly) {
        . center{[fx(f, f[0]) - 0.36, fy(f, y), 0]} Math(to_string(y), 0.72, SLATE)
    }
    . center{[(fx(f, f[0]) + fx(f, f[1])) / 2, fy(f, f[2]) - 0.64, 0]} Note(xname, 0.72)
    . center{[(fx(f, f[0]) + fx(f, f[1])) / 2, fy(f, f[3]) + 0.3, 0]} Cap(title, 0.74, col)
}
let Arrow2 = |tail, vec, col, w = 4| Tip(tail, [tail[0] + vec[0], tail[1] + vec[1], 0], col, w, 0.18)
let Dash = |a, b, col = SLATE, w = 2.5| dashed{[0.12, 0.08]} stroke{col, w} Line(a, b)
let tidy = |v, eps = 0.05| {
    if (abs(v) < eps) { return 0 }
    return v
}
let dir = |a| [cos(a), sin(a), 0]
# Earth: radius (m), GM (m^3/s^2), and GM in Earth radii cubed per second squared
let RE = 6371000.0
let GM = 398600000000000.0
let GMR = GM / (RE * RE * RE)
let Earth = |c, r, n = 96| fill{tint(AZURE, 0.3)} stroke{AZURE, 3} center{c} Circle(r, n)