01 · Stretch
Why two bulges?
The near side feels the Moon’s gravity more strongly than Earth’s center. The far side feels it less strongly. Relative to the center, ocean water is stretched along the Earth–Moon line in both directions.
Learnsy lesson 3 · Earth science
The Moon does not simply “pull water toward it.” Its gravity stretches the whole Earth–ocean system. Add the Sun, spin Earth through the two bulges, and the daily rhythm of high and low water appears.
Drag through one lunar month
Scrub time to orbit the Moon. Watch the lunar and solar tide patterns add together, then compare the resulting water-level curve.
The coral marker follows one coast as Earth turns. The exaggerated water shape is useful for understanding the forces, not for predicting a particular harbor.
01 · Stretch
The near side feels the Moon’s gravity more strongly than Earth’s center. The far side feels it less strongly. Relative to the center, ocean water is stretched along the Earth–Moon line in both directions.
02 · Rotate
As Earth rotates under those bulges, a coast passes through high, low, high, then low water. Because the Moon moves along its orbit each day, Earth needs about 50 extra minutes to face it again.
03 · Combine
The Sun also raises tides. At new and full moon its pattern lines up with the Moon’s: spring tides. At quarter moons they cross: smaller neap tides.
Uniform gravity would accelerate Earth and its ocean together. Tides arise because gravity changes across Earth. The leading approximation to tide-raising acceleration scales like:
The Sun is enormously massive, but it is very far away. The nearby Moon therefore raises a stronger tide. Distance is cubed, so a modest distance change matters a lot.
The simple model explains the rhythm, but actual ocean basins slosh. Continents block the bulges, water has inertia and friction, and bays can amplify or delay the response. Some places get one high tide per day; others get two of unequal height.
A compact version of the simulator: two twice-per-cycle tide terms combine as the Moon changes angle.
type TideState = { day: number; range: number };
function tideState(day: number): TideState {
const lunarMonth = 29.53;
const moonAngle = 2 * Math.PI * day / lunarMonth;
// Moon strength 1.0, Sun strength 0.46.
// cos(2θ) gives two bulges per orbit.
const range = Math.sqrt(
1 ** 2 + 0.46 ** 2 +
2 * 1 * 0.46 * Math.cos(2 * moonAngle)
);
return { day, range };
}