Picture this: you’re standing on a spinning turntable and you throw a ball toward your friend. The ball travels in a perfectly straight line — but because you and your friend are rotating with the platform, you both perceive its path as curved. That, scaled to the entire Earth, is the Coriolis effect: any object moving within a rotating reference frame experiences an apparent force that deflects it from a straight-line trajectory.
1. Evidence 1 — North-South Deflection (Atmospheric Science)
This argument comes from atmospheric science textbooks (e.g., Holton & Hakim, An Introduction to Dynamic Meteorology) and provides the clearest physical intuition for the Coriolis effect.
Imagine an object launched from the equator (radius $R$, tangential speed $v_0 = \Omega R$) moving northward until it reaches latitude $\varphi$. At that latitude, Earth’s surface has tangential speed $v(\varphi) = \Omega R\cos\varphi$ — slower than the equator. But the object still carries its original angular momentum, so its eastward speed exceeds the ground beneath it. Result: the object deflects eastward — in the Northern Hemisphere this means a deflection to the right relative to the direction of motion.
2. Evidence 2 — The Sink Drain: Myth vs. Shapiro Experiment
You’ve probably heard that “water drains counterclockwise in the Southern Hemisphere.” This is one of the most famous scientific beliefs — and it’s partly wrong.
Why ordinary drains don’t show the Coriolis effect
The Coriolis acceleration in a typical sink is about $a_{\text{Cor}} \approx 2 \times 7.27\times10^{-5} \times 0.01 \times \sin(45°) \approx 10^{-6}$ m/s². Gravity is $g = 9.8$ m/s². The ratio is roughly $10^{-7}$ — meaning Coriolis is ten million times weaker than local effects (bowl shape, initial water disturbance, any tiny breeze).
When can it be observed?
In 1962, Ascher Shapiro (MIT) demonstrated that under highly controlled conditions, the Coriolis effect is measurable in a 1.8-meter pool — provided the water is left completely undisturbed for 24 hours to dissipate all initial rotation. Result: the vortex was always clockwise in the Northern Hemisphere.
At larger scales — hurricanes, ocean gyres, jet streams — the Coriolis effect dominates and shapes Earth’s global climate system.

3. Mathematical Foundation — Rotating Frames (Simon’s Analytical Mechanics)
In Analytical Mechanics by Simon (2013), the time derivative of an arbitrary vector $\mathbf{A}$ as seen from an inertial frame ($S$) and a rotating frame ($S’$) are related by:
$$\left(\frac{d\mathbf{A}}{dt}\right)_S = \left(\frac{d\mathbf{A}}{dt}\right)_{S’} + \boldsymbol{\Omega} \times \mathbf{A}$$
$\mathbf{A}$ : Arbitrary vector
$\boldsymbol{\Omega}$ : Angular velocity vector of rotating frame — in rad/s
$S$ : Inertial (non-rotating) frame
$S’$ : Rotating frame
Applying this relation twice to the position vector $\mathbf{r}$ yields the equation of motion in the rotating frame:
$$m\ddot{\mathbf{r}}’ = \mathbf{F}_{\text{real}} – 2m(\boldsymbol{\Omega} \times \dot{\mathbf{r}}’) – m\boldsymbol{\Omega} \times (\boldsymbol{\Omega} \times \mathbf{r}’) – m\dot{\boldsymbol{\Omega}} \times \mathbf{r}’$$
$m$ : Mass of object — in kg
$\ddot{\mathbf{r}}’$ : Acceleration in rotating frame — in m/s²
$\mathbf{F}_{\text{real}}$ : Real (inertial) force — in N
$\boldsymbol{\Omega}$ : Earth’s angular velocity — in rad/s; $7.27\times10^{-5}$
$\dot{\mathbf{r}}’$ : Velocity of object in rotating frame — in m/s
The three extra terms are fictitious forces:
- Coriolis force: $\mathbf{F}_{\text{Cor}} = -2m(\boldsymbol{\Omega} \times \dot{\mathbf{r}}’)$ — depends on the object’s velocity.
- Centrifugal force: $\mathbf{F}_{\text{cf}} = -m\boldsymbol{\Omega} \times (\boldsymbol{\Omega} \times \mathbf{r}’)$ — depends on position.
- Euler force: $\mathbf{F}_{\text{Euler}} = -m\dot{\boldsymbol{\Omega}} \times \mathbf{r}’$ — appears only if the angular velocity changes.
For Earth, $\Omega \approx 7.27 \times 10^{-5}$ rad/s. The Coriolis acceleration at latitude $\varphi$ for an object with speed $v$ is:
$$a_{\text{Cor}} = 2\Omega v \sin\varphi$$
$\Omega$ : Earth’s angular velocity — in rad/s; $7.27\times10^{-5}$
$v$ : Speed of object — in m/s
$\varphi$ : Geographic latitude — in °
$a_{\text{Cor}}$ : Coriolis acceleration — in m/s²
4. Evidence 3 — Hurricanes and Geostrophic Flow
The most spectacular everyday evidence of the Coriolis effect is in weather systems. Air flows from high-pressure to low-pressure regions — but the Coriolis effect deflects it:
- In the Northern Hemisphere: cyclones (low pressure) spin counterclockwise; anticyclones (high pressure) spin clockwise.
- In the Southern Hemisphere: the reverse.
The governing equation for geostrophic flow — where the Coriolis force exactly balances the pressure gradient — is:
$$\mathbf{v}_g = \frac{1}{2\Omega\rho\sin\varphi}\left(-\nabla p \times \hat{z}\right)$$
$\mathbf{v}_g$ : Geostrophic wind velocity — in m/s
$\rho$ : Air density — in kg/m³; $\approx 1.2$
$\nabla p$ : Pressure gradient — in Pa/m
$\hat{z}$ : Vertical unit vector
5. The Foucault (Coriolis) Pendulum
The Foucault pendulum is the most direct laboratory demonstration of the Coriolis effect. The equations of motion in the horizontal plane are:
$$\ddot{x} = -\omega_0^2 x + 2\Omega_z \dot{y}$$
$$\ddot{y} = -\omega_0^2 y – 2\Omega_z \dot{x}$$
$\omega_0$ : Natural frequency of pendulum $\sqrt{g/L}$ — in rad/s
$\Omega_z$ : Vertical component of Earth’s rotation $\Omega\sin\varphi$ — in rad/s
$x, y$ : Horizontal displacement of pendulum bob — in m
Defining the complex variable $\zeta = x + iy$, the solution is:
$$\zeta(t) = e^{-i\Omega_z t}\left(A e^{i\omega_+ t} + B e^{-i\omega_- t}\right)$$
The oscillation plane rotates at rate $\Omega_z$. The period for one complete precession is:
$$T_{\text{prec}} = \frac{24\,\text{h}}{\sin\varphi}$$
$T_{\text{prec}}$ : Precession period of oscillation plane — in h
$\varphi$ : Geographic latitude — in °
| Location | Latitude | Precession Period |
|---|---|---|
| North Pole | 90° | 24 hours |
| Paris (original Foucault pendulum) | 48.8° | 32.1 hours |
| Tehran | 35.7° | 41.1 hours |
| Equator | 0° | ∞ (no precession) |
Foucault Pendulum at the Panthéon, Paris
The original Foucault pendulum at the Panthéon in Paris — its plane of oscillation completes one full rotation every 32 hours:
6. Simulation 1 — Trajectory Deflection in a Rotating Frame
The code below shows the trajectory of a ball thrown northward in two frames: inertial (no Coriolis) and rotating (with Coriolis). Adjust the latitude and initial speed to see how the deflection changes.
[pyodide]
import numpy as np
import matplotlib
matplotlib.use(‘Agg’)
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
# Parameters
lat_deg = 45.0 # latitude (degrees)
v0 = 300.0 # initial speed (m/s) northward
t_max = 200.0 # simulation time (s)
Omega = 7.2921e-5 # Earth rotation rate (rad/s)
lat = np.radians(lat_deg)
Omega_z = Omega * np.sin(lat) # vertical component
def coriolis_ode(t, state):
x, y, vx, vy = state
ax = 2 * Omega_z * vy
ay = -2 * Omega_z * vx
return [vx, vy, ax, ay]
def inertial_ode(t, state):
x, y, vx, vy = state
return [vx, vy, 0, 0]
state0 = [0, 0, 0, v0]
t_eval = np.linspace(0, t_max, 2000)
sol_cor = solve_ivp(coriolis_ode, [0, t_max], state0, t_eval=t_eval, rtol=1e-8)
sol_in = solve_ivp(inertial_ode, [0, t_max], state0, t_eval=t_eval, rtol=1e-8)
fig, axes = plt.subplots(1, 2, figsize=(11, 5))
fig.suptitle(f’Coriolis Deflection at Latitude {lat_deg}N | v0 = {v0} m/s’, fontsize=12, fontweight=’bold’)
ax = axes[0]
ax.plot(sol_in.y[0]/1000, sol_in.y[1]/1000, ‘b–‘, lw=1.5, label=’Inertial (no Coriolis)’)
ax.plot(sol_cor.y[0]/1000, sol_cor.y[1]/1000, ‘r-‘, lw=2.5, label=’Rotating frame (with Coriolis)’)
deflection = sol_cor.y[0][-1] – sol_in.y[0][-1]
ax.annotate(f’Deflection: {deflection/1000:.2f} km East’,
xy=(sol_cor.y[0][-1]/1000, sol_cor.y[1][-1]/1000),
xytext=(sol_cor.y[0][-1]/1000 – 20, sol_cor.y[1][-1]/1000 – 10),
arrowprops=dict(arrowstyle=’->’, color=’darkred’),
fontsize=9, color=’darkred’)
ax.set_xlabel(‘East displacement (km)’)
ax.set_ylabel(‘North displacement (km)’)
ax.set_title(‘Trajectory (top view)’)
ax.legend(fontsize=8)
ax.grid(True, alpha=0.3)
ax.set_aspect(‘equal’)
ax.axhline(0, color=’gray’, lw=0.5)
ax.axvline(0, color=’gray’, lw=0.5)
lats = np.linspace(5, 85, 200)
deflections = []
for la in lats:
Oz = Omega * np.sin(np.radians(la))
def ode(t, s):
return [s[2], s[3], 2*Oz*s[3], -2*Oz*s[2]]
s = solve_ivp(ode, [0, t_max], state0, t_eval=[t_max], rtol=1e-8)
deflections.append(s.y[0][-1] / 1000)
ax2 = axes[1]
ax2.plot(lats, deflections, ‘r-‘, lw=2.5)
ax2.axvline(lat_deg, color=’gray’, ls=’–‘, lw=1, label=f’Current: {lat_deg}’)
ax2.set_xlabel(‘Latitude (degrees North)’)
ax2.set_ylabel(‘Eastward deflection (km)’)
ax2.set_title(f’Deflection vs Latitude (t = {t_max} s)’)
ax2.legend(fontsize=8)
ax2.grid(True, alpha=0.3)
ax2.fill_between(lats, 0, deflections, alpha=0.15, color=’red’)
plt.tight_layout()
plt.savefig(‘/tmp/coriolis_sim_en.png’, dpi=130, bbox_inches=’tight’)
plt.close()
print(f’Coriolis deflection at {lat_deg}N after {t_max}s: {deflections[int(len(lats)*lat_deg/90)]:.2f} km East’)
[/pyodide]
7. Simulation 2 — Planetary Coriolis Parameter
Compare the Coriolis parameter $f = 2\Omega\sin\varphi$ across Solar System planets. Select a planet or enter custom values:
[pyodide]
import numpy as np
import matplotlib
matplotlib.use(‘Agg’)
import matplotlib.pyplot as plt
# Planet data: name, radius_km, rotation_period_hours
planets = {
‘Earth’: {‘R’: 6371, ‘T’: 23.93, ‘color’: ‘#1a73e8’, ‘diff’: False},
‘Mars’: {‘R’: 3390, ‘T’: 24.62, ‘color’: ‘#e53935’, ‘diff’: False},
‘Jupiter’: {‘R’: 71492, ‘T’: 9.925, ‘color’: ‘#fb8c00’, ‘diff’: True},
‘Saturn’: {‘R’: 60268, ‘T’: 10.56, ‘color’: ‘#fdd835’, ‘diff’: True},
‘Uranus’: {‘R’: 25559, ‘T’: 17.24, ‘color’: ‘#00acc1’, ‘diff’: False},
‘Neptune’: {‘R’: 24764, ‘T’: 16.11, ‘color’: ‘#3949ab’, ‘diff’: False},
}
# User settings
lat_deg = 45.0 # latitude in degrees
wind_speed = 50.0 # m/s
lat = np.radians(lat_deg)
results = {}
for name, data in planets.items():
T_s = data[‘T’] * 3600.0
Omega = 2 * np.pi / T_s
f = 2 * Omega * np.sin(lat)
a_cor = abs(f) * wind_speed
results[name] = {‘Omega’: Omega, ‘f’: f, ‘a_cor’: a_cor, ‘diff’: data[‘diff’], ‘color’: data[‘color’]}
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
fig.suptitle(f’Planetary Coriolis Parameter | lat={lat_deg} wind={wind_speed} m/s’, fontsize=12, fontweight=’bold’)
names = list(results.keys())
f_vals = [results[n][‘f’]*1e4 for n in names]
colors = [results[n][‘color’] for n in names]
ax1 = axes[0]
bars = ax1.bar(names, f_vals, color=colors, edgecolor=’white’, linewidth=1.5)
ax1.set_ylabel(‘Coriolis parameter f = 2*Omega*sin(lat) [x 10^-4 rad/s]’)
ax1.set_title(‘Coriolis Parameter by Planet’)
ax1.grid(True, alpha=0.3, axis=’y’)
for bar, name in zip(bars, names):
if results[name][‘diff’]:
bar.set_hatch(‘//’)
ax1.text(bar.get_x()+bar.get_width()/2, bar.get_height()+0.05,
‘*diff’, ha=’center’, fontsize=7, color=’gray’)
ax1.legend(handles=[
plt.Rectangle((0,0),1,1, fc=’white’, hatch=’//’, ec=’gray’, label=’Differential rotation (gas giant)’)
], fontsize=8, loc=’upper left’)
a_vals = [results[n][‘a_cor’]*1000 for n in names]
ax2 = axes[1]
bars2 = ax2.bar(names, a_vals, color=colors, edgecolor=’white’, linewidth=1.5)
ax2.set_ylabel(‘Coriolis acceleration a = f*v [x 10^-3 m/s^2]’)
ax2.set_title(f’Coriolis Acceleration (v={wind_speed} m/s)’)
ax2.grid(True, alpha=0.3, axis=’y’)
plt.tight_layout()
plt.savefig(‘/tmp/coriolis_planets_en.png’, dpi=130, bbox_inches=’tight’)
plt.close()
print(‘=== Planetary Coriolis Parameters ===’)
print(f’Latitude: {lat_deg} deg | Wind speed: {wind_speed} m/s’)
print(f'{“Planet”:<10} {"Omega (rad/s)":<18} {"f (1e-4 rad/s)":<20} {"a_Cor (mm/s^2)":<18} {"Notes"}')
print('-'*80)
for name in names:
r = results[name]
note = 'differential rotation' if r['diff'] else ''
print(f'{name:<10} {r["Omega"]:.4e} {r["f"]*1e4:.4f} {r["a_cor"]*1000:.4f} {note}')
print()
print('* Gas giants (Jupiter, Saturn) have differential rotation:')
print(' Omega varies with latitude => f = 2*Omega(lat)*sin(lat) is non-uniform.’)
print(‘ Jupiter System I (equator): 9h 50m | System III (magnetic): 9h 55m 37s’)
print(‘ Saturn equatorial period: ~10h 14m vs polar: ~10h 38m’)
[/pyodide]
8. Planetary Storms — Jupiter’s Great Red Spot
The Solar System’s most dramatic examples of the Coriolis effect are found on giant gas planets.
Jupiter’s Great Red Spot
- Nature: A persistent anticyclone (high-pressure vortex) in Jupiter’s Southern Hemisphere.
- Size: Diameter approximately 16,000 km — larger than Earth’s diameter.
- Age: Over 350 years of observed stability (since the late 17th century).
Why do gas giants produce such storms?
The answer lies in their rapid rotation:
- Jupiter: Day ≈ 10 hours → $\Omega_{\text{Jup}} \approx 1.77\times10^{-4}$ rad/s (2.4× Earth) → much stronger Coriolis force → organized, long-lived vortices.
- On Earth, storms weaken within weeks due to surface friction. Jupiter has no solid surface — nothing to dissipate the energy.
Jupiter’s differential rotation
Jupiter does not rotate as a rigid body — its angular velocity depends on latitude:
- System I (equatorial belt): period 9 h 50 min
- System III (magnetic field): period 9 h 55 min 37 s
- Consequence: $\Omega$ is a function of latitude → $f = 2\Omega(\varphi)\sin\varphi$ varies across the planet → the Coriolis force continuously changes with latitude, producing shear stress that shapes Jupiter’s famous alternating cloud bands.
Rossby number and Coriolis dominance
The Rossby number expresses the ratio of inertial to Coriolis forces:
$$Ro = \frac{U}{f \cdot L}$$
$U$ : Characteristic flow speed — in m/s; $\approx 100$
$f$ : Coriolis parameter $2\Omega\sin\varphi$ — in rad/s; $\approx 3\times10^{-4}$
$L$ : Characteristic length scale — in m; $\approx 8\times10^{6}$
$Ro$ : Rossby number — in dimensionless; $\approx 0.01$
For the Great Red Spot, $Ro \approx 0.01$ — meaning Coriolis completely dominates the dynamics. This is why the storm has persisted for centuries.
Saturn’s North Polar Hexagon
Saturn hosts one of the Solar System’s most striking geometric structures: a stable hexagonal jet stream at its north pole, approximately 30,000 km across. This pattern persisted unchanged from Voyager observations (1980s) through Cassini’s mission end (2017) — a remarkable demonstration of the precise balance between Coriolis force, pressure gradients, and wave instabilities.
9. Educational Videos
Drain vortex experiment on both sides of the equator
Destin (SmarterEveryDay) and Derek (Veritasium) perform a controlled drain experiment on opposite sides of the equator in Kenya:
Coriolis effect in meteorology
Visual explanation of how hurricanes and the jet stream form due to the Coriolis effect:
10. Summary
- The Coriolis effect is a fictitious force in a rotating frame — it does not exist in an inertial frame.
- It is not observable in ordinary sinks except under extremely controlled conditions (Shapiro experiment).
- It is decisive at the scale of hurricanes, ocean currents, and ballistic missiles.
- The Foucault pendulum precession period in Tehran ≈ 41 hours.
- Jupiter’s Great Red Spot with $Ro \approx 0.01$ is the Solar System’s premier example of Coriolis dominance.
- Differential rotation in gas giants causes the Coriolis force to vary continuously with latitude.
11. Quick Reference Table
| Concept | Symbol / Formula | Earth value | Notes |
|---|---|---|---|
| Coriolis acceleration | $a_{\text{Cor}} = 2\Omega v\sin\varphi$ | $\sim 10^{-2}$ m/s² (50 m/s wind, 45°) | Perpendicular to velocity |
| Earth’s rotation rate | $\Omega$ | $7.27\times10^{-5}$ rad/s | Sidereal rotation |
| Coriolis parameter | $f = 2\Omega\sin\varphi$ | $1.03\times10^{-4}$ rad/s (45°N) | Used in meteorology |
| Foucault pendulum period | $T_{\text{prec}} = 24\,\text{h}/\sin\varphi$ | 41.1 h (Tehran, 35.7°) | ∞ at equator |
| Rossby number | $Ro = U/(fL)$ | $\sim 0.1$ (hurricane) | $Ro \ll 1$ → Coriolis dominates |
| Jupiter GRS Rossby number | $Ro$ | $\approx 0.01$ | Coriolis completely dominant |
| Jupiter rotation period | System III | 9 h 55 min 37 s | Differential rotation |
| Saturn hexagon diameter | — | ~30,000 km | North polar jet stream |
References
- Simon, J. (2013). Analytical Mechanics. Chapter on Non-Inertial Reference Frames. Cambridge University Press.
- Holton, J. R. & Hakim, G. J. (2013). An Introduction to Dynamic Meteorology (5th ed.). Academic Press.
- Shapiro, A. H. (1962). “Bath-Tub Vortex”. Nature, 196, 1080–1081.
- Persson, A. (1998). “How Do We Understand the Coriolis Force?” Bulletin of the American Meteorological Society, 79(7).
- Taylor, J. R. (2005). Classical Mechanics. Chapter 9: Non-Inertial Reference Frames. University Science Books.
- Mitchell, J. L. et al. (2011). “Dynamics of Saturn’s North Polar Hexagon”. Geophysical Research Letters.
- Rogers, J. H. (1995). The Giant Planet Jupiter. Cambridge University Press.
Have a question? 🤔
If something isn't clear or you have a question, ask it here. The answer will be published on this page.
💬 جواب بهتری داری؟ یا یه سؤال جدید؟
اگه به سؤالای بالا پاسخی داری که فکر میکنی روشنتر یا کاملتر از مال منه، یا یه سؤال جدید برای دانشآموزای دیگه داری — تو بخش نظرات پایین صفحه ارسال کن. هر پیامی رو میخونم، تأیید میکنم و منتشر میشه. اینجوری همه از تجربهی همدیگه استفاده میکنیم. 🌱
