Astrophysics · Mathematics
📅 March 2026 ⏱ ≈ 11 min read 🎯 Intermediate

Orbital Mechanics and Kepler's Laws: from the ellipse to the anomaly equation

Kepler's three laws let you compute the exact position of any planet at any point in time — without numerical integration. The key: the transcendental Kepler equation, solved in a few Newton's method iterations.

1. Kepler's three laws

Йоганн Кеплер (1609–1619) вивів свої закони з спостережень Тихо Браге — і вони виявилися точними задовго до того, як Ньютон пояснив їх через закон тяжіння.

Law I
Orbit — ellipse

Every planet moves along an ellipse with the Sun at one of its foci.

Law II
Equal areas

The planet's radius vector sweeps equal areas in equal time intervals.

Law III
Harmonic

The square of the orbital period is proportional to the cube of the semi-major axis: T² ∝ a³.

Разом ці закони описують кеплерівський рух — ідеальну дві-тільну задачу, де масою людини нехтуємо, а Сонце нерухоме. Реальний Сонячний рух відхиляється від цього через взаємні тяжіння планет — саме тоді потрібні N-тіла.

2. Ellipse geometry

Еліпс визначається великою напівосю a та ексцентриситетом e ∈ [0, 1):

b = a · √(1 − e²) ← semi-minor axis
c = a · e ← distance centre → focus
r_min = a(1 − e) ← perihelion (closest point to the Sun)
r_max = a(1 + e) ← aphelion (farthest point)

У фокусній системі координат (Сонце у лівому фокусі) положення точки на еліпсі описується через справжню аномалію ν (кут відносно перигелію):

r = a(1 − e²) / (1 + e·cos(ν)) ← polar equation of the ellipse

3. First law — elliptical orbit

Орбіту повністю описують 6 орбітальних елементів Кеплера. Для 2D-симуляції Сонячної системи достатньо двох:

Для 3D потрібні ще нахил i, довгота висхідного вузла Ω, аргумент перицентру ω та середня аномалія у епох M₀. NASA Horizons публікує всі 6 елементів для кожної планети.

Кругова орбіта — окремий випадок при e = 0. Земля: e ≈ 0.0167 (майже коло). Марс: e ≈ 0.093 (помітний еліпс). Комета Галлея: e ≈ 0.967 (дуже витягнута).

4. Second law — equal areas та збереження моменту

Другий закон Кеплера — це збереження кутового моменту:

L = m · r × v = const

dA/dt = L / (2m) = const ← areal velocity — constant

Наслідок: у перигелії планета рухається найшвидше, в афелії — найповільніше. Кутова швидкість ν̇ змінюється з відстанню:

ν̇ = √(μ · a(1−e²)) / r²

μ = G·M — gravitational parameter of the Sun
In AU/yr²: μ = 4π² (with a in AU, T in years)

Це означає, що ми не можемо просто лінійно змінювати ν за часом — нам потрібна фізична прив'язка через рівняння Кеплера.

5. Third law — harmonic

Ньютон вивів точну форму через закон тяжіння:

T² = (4π² / μ) · a³

In the AU–year system: T [years] = a^(3/2) [AU]

Земля: a = 1 а.о. → T = 1 рік ✓
Марс: a = 1.524 → T = 1.524^1.5 ≈ 1.88 рр ✓
Юпітер: a = 5.203 → T = 5.203^1.5 ≈ 11.86 рр ✓

Третій закон дозволяє обчислити кутову швидкість (середній рух) n:

n = 2π / T = 2π · a^(-3/2) [рад/рік]

6. Kepler's equation and anomalies

Щоб знайти де знаходиться планета у момент часу t, потрібно пов'язати час із кутом. Введемо три аномалії:

Зв'язок M і E — трансцендентне рівняння Кеплера:

M = E − e · sin(E) ← Kepler's equation (1619)

Це рівняння не можна вирішити аналітично для E. Використовують ітерацію Ньютона:

E₀ = M (початкове наближення)
Eₙ₊₁ = Eₙ − (Eₙ − e·sin(Eₙ) − M) / (1 − e·cos(Eₙ))

Converges in 3–5 iterations for all Solar System planets

Маючи E, обчислюємо справжню аномалію ν та декартові координати на орбіті:

x_orb = a · (cos(E) − e)
y_orb = a · √(1−e²) · sin(E)

tan(ν/2) = √((1+e)/(1−e)) · tan(E/2)

r = a · (1 − e · cos(E)) ← distance to the Sun

7. JavaScript implementation

/** Solves Kepler's equation by Newton's method */
function solveKepler(M, e, tol = 1e-9) {
  M = M % (2 * Math.PI); // Normalise to [0, 2π]
  let E = M;
  for (let i = 0; i < 50; i++) {
    const dE = (E - e * Math.sin(E) - M) / (1 - e * Math.cos(E));
    E -= dE;
    if (Math.abs(dE) < tol) break;
  }
  return E;
}

/** Returns {x, y} in the orbital plane (AU) */
function orbitalPos(a, e, M) {
  const E = solveKepler(M, e);
  return {
    x: a * (Math.cos(E) - e),
    y: a * Math.sqrt(1 - e * e) * Math.sin(E)
  };
}

/** Planets: a (AU), e, period (years), color */
const PLANETS = [
  { name: 'Mercury', a: 0.387, e: 0.206, T: 0.241, color: '#a8a8a8' },
  { name: 'Venus',   a: 0.723, e: 0.007, T: 0.615, color: '#f5c842' },
  { name: 'Earth',   a: 1.000, e: 0.017, T: 1.000, color: '#4fa3e0' },
  { name: 'Mars',    a: 1.524, e: 0.093, T: 1.881, color: '#d95030' },
  { name: 'Jupiter', a: 5.203, e: 0.049, T: 11.86, color: '#e8b87d' },
  { name: 'Saturn',  a: 9.537, e: 0.057, T: 29.46, color: '#c8b560' },
];

// Animation: t in years
let t = 0;
function animate() {
  clearCanvas();
  drawSun();
  for (const p of PLANETS) {
    const n = 2 * Math.PI / p.T;         // mean motion [rad/yr]
    const M = n * t;                      // mean anomaly
    const { x, y } = orbitalPos(p.a, p.e, M);
    drawPlanet(x, y, p.color, p.name);
  }
  t += 0.005; // 1 frame = ~1.8 days
  requestAnimationFrame(animate);
}

Обчислення точного положення планети займає ~10 нс. Навіть усі 8 планет + Плутон + 100 астероїдів розраховуються за <5 мкс — набагато дешевше за N-тіла.

8. Real planet data

Планета a (а.о.) e T (роки) Перигелій (а.о.) Афелій (а.о.)
Mercury 0.387 0.206 0.241 0.307 0.467
Venus 0.723 0.007 0.615 0.718 0.728
Earth 1.000 0.017 1.000 0.983 1.017
Mars 1.524 0.093 1.881 1.381 1.666
Jupiter 5.203 0.049 11.86 4.950 5.455
Saturn 9.537 0.057 29.46 9.001 10.07
Uranus 19.19 0.046 84.01 18.29 20.09
Neptune 30.07 0.010 164.8 29.77 30.37

Дані відповідають середнім орбітальним елементам J2000 (NASA JPL). Реальні елементи повільно змінюються через прецесію (спорадичні збурення від інших планет).

Факт: Венера має майже ідеально кругову орбіту (e = 0.007), тоді як Меркурій — найбільший ексцентриситет серед планет (e = 0.206). Саме через це Ейнштейн міг перевірити ОТВ: прецесія перигелію Меркурія 43"/рік не пояснювалась класичною механікою.

9. Kepler vs N-body: коли що обирати

Аналітичний підхід Кеплера та чисельний метод N-тіл вирішують різні задачі:

Criterion Kepler (analytic) N-body (Leapfrog)
Bodies One body around centre Any number
Accuracy Machine precision (±eps) Depends on dt
Speed O(1) per planet O(N²) або O(N log N)
Interactions With central body only All pairwise
Example Position of Mars in 1000 years Galaxy collisions, body+moon

Для Сонячної системи повнофункціональна симуляція поєднує обидва: Кеплер для фонових планет (не впливають між собою), N-тіло для випадків, де потрібні збурення (астероїди поблизу Юпітера, резонанси в поясі Койпера).

▶ Live Demo

🪐 Solar System simulation

Interactive Solar System with real orbital elements of the planets and Three.js.

Open simulation →

🔗 Related Simulations

🔭Orbital N-Body Binary Stars 🌌Galaxy