Астрофізика · Космос
📅 Липень 2026 ⏱ ≈ 13 хв читання 🎯 Середній рівень · Останнє оновлення: 3 липня 2026 р.

Подвійні зоряні системи — орбіти двох тіл, порожнини Роша та симуляція у Three.js

Більшість зірок — не самотні сонця, як наше: понад половина належить до подвійних систем. Дві зорі, зв'язані тяжінням, підпорядковуються тій самій фізиці, що й планета навколо сонця, але з нюансом: якщо вони підійдуть близько, одна може "відривати" речовину від іншої.

1. Що таке подвійна зоряна система?

Подвійна зоряна система складається з двох зірок, зв'язаних взаємним тяжінням, які обертаються навколо спільного центра мас (баріцентра). Огляди найближчих зірок свідчать, що приблизно 50–85% зірок сонячного типу мають щонайменше одного зоряного супутника, залежно від спектрального класу — масивні зорі класів O та B майже завжди кратні, тоді як маломасивні червоні карлики частіше самотні. Наше Сонце незвичне тим, що воно (наскільки відомо) є самотньою зорею.

Подвійні системи сильно різняться за масштабом. Деякі пари обертаються з періодами в кілька годин, майже торкаючись одна одної; іншим потрібні сотні тисяч років на один оберт, а відстань між ними — світловий рік і більше. Відома зоря Альфа Центавра насправді є потрійною системою: Альфа Центавра A та B утворюють тісну подвійну з періодом 80 років, тоді як тьмяний червоний карлик Проксима Центавра обертається навколо цієї пари на відстані приблизно 13 000 а.о.

Чому подвійні системи важливі: оскільки обидві маси можна виміряти безпосередньо з орбіти (за третім законом Кеплера), подвійні зорі є основним джерелом точних вимірювань зоряних мас. Майже все, що ми знаємо про співвідношення маса–світність для зірок, походить саме з орбіт подвійних систем.

2. Задача двох тіл і зведення до одного тіла

Дві точкові маси m₁ і m₂ притягуються одна до одної за законом тяжіння Ньютона. На перший погляд здається, що для цього потрібні два окремі рівняння руху, але класичний прийом — перехід до відносної координати — перетворює задачу на одну задачу одного тіла, точнісінько як планета навколо Сонця.

Відносне положення: r = r₂ − r₁
Зведена маса: μ = (m₁·m₂) / (m₁ + m₂)

Рівняння руху для відносного вектора:
d²r/dt² = −G(m₁ + m₂)·r / |r|³

Це формально ідентично одній частинці масою μ, що обертається навколо нерухомого центру із загальною масою M = m₁ + m₂.

Іншими словами: розв'яжіть звичайну орбіту Кеплера двох тіл для вектора розділення між зірками, використовуючи сумарну масу M = m₁ + m₂. Потім розділіть цю відносну орбіту між двома реальними зорями обернено пропорційно їхнім масам — масивніша зоря описує меншу еліпсу ближче до баріцентра.

Положення зорі 1 відносно баріцентра:
r₁ = −(m₂ / M) · r

Положення зорі 2 відносно баріцентра:
r₂ = (m₁ / M) · r

3. Третій закон Кеплера для подвійних систем

Для еліптичної відносної орбіти з великою піввіссю a (сумою великих піввісей обох зірок, a = a₁ + a₂), орбітальний період безпосередньо випливає з ньютонівського узагальнення третього закону Кеплера:

P² = 4π² · a³ / [G·(m₁ + m₂)]

або у зручних астрономічних одиницях:
(роки) = a³(а.о.) / M(маси Сонця)

Саме це рівняння робить подвійні системи такими цінними: якщо виміряти орбітальний період P та фізичну відстань a (за паралаксом і кутовою відстанню), одразу отримуємо сумарну масу системи. У поєднанні з відношенням мас, отриманим із руху центра мас, обидві окремі маси випливають самі собою.

// Третій закон Кеплера, розв'язаний відносно сумарної маси, зручні СІ-одиниці
const G = 6.674e-11;           // м^3 кг^-1 с^-2

function totalMassFromOrbit(semiMajorAxisM, periodSeconds) {
  return (4 * Math.PI * Math.PI * Math.pow(semiMajorAxisM, 3))
       / (G * periodSeconds * periodSeconds);
}

// Приклад: Альфа Центавра A+B, a ≈ 23.5 а.о., P ≈ 79.9 років
const AU = 1.496e11;
const YEAR = 3.156e7;
const Msun = 1.989e30;
const M = totalMassFromOrbit(23.5 * AU, 79.9 * YEAR);
console.log(M / Msun);  // ≈ 2.0 сонячних мас сумарно

4. Центр мас і відношення мас

Оскільки обидві зорі обертаються навколо спільного баріцентра, їхні індивідуальні великі піввісі обернено пропорційні масам. Важка головна зоря майже не рухається; легкий супутник описує набагато ширшу орбіту:

m₁·a₁ = m₂·a₂

Відношення мас: q = m₂ / m₁ (зазвичай визначається так, що m₂ ≤ m₁)
a₁ / a₂ = m₂ / m₁ = q

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

Система Відношення мас q Відстань Період Примітки
Сіріус A/B 0,50 ~20 а.о. ~50 р. B — залишок білого карлика
Альфа Центавра A/B 0,92 ~23,5 а.о. ~80 р. Майже рівномасова пара
Лебідь X-1 0,55 ~0,2 а.о. 5,6 діб Блакитний надгігант + чорна діра
Алгол (Бета Персея) 0,22 ~0,06 а.о. 2,87 доби Класичний затемнюваний / парадокс Алгола

5. Порожнини Роша й перетікання маси

Реальні зорі — не точки: вони мають скінченний розмір і в тісній подвійній системі можуть навіть змінювати форму під тяжінням супутника. Порожнина Роша — це краплеподібна еквіпотенціальна поверхня навколо кожної зорі, всередині якої речовина гравітаційно прив'язана саме до цієї зорі. Якщо зоря розширюється (наприклад, сходячи з головної послідовності й перетворюючись на гіганта) настільки, що заповнює свою порожнину Роша, газ може перетікати через внутрішню точку Лагранжа L1 на супутника — процес, названий перетіканням через порожнину Роша.

Широко вживане наближення Еґлтона дає ефективний радіус порожнини Роша (як частку від орбітальної відстані a) виключно як функцію відношення мас q = m₁/m₂:

R_L / a ≈ 0.49·q^(2/3) / [0.6·q^(2/3) + ln(1 + q^(1/3))]

Справедливо для всього діапазону 0 < q < ∞, точність близько 1%.
// Наближення радіуса порожнини Роша (Еґлтон, 1983)
function rocheLobeRadius(q, separation) {
  const q23 = Math.pow(q, 2 / 3);
  const q13 = Math.pow(q, 1 / 3);
  const ratio = (0.49 * q23) / (0.6 * q23 + Math.log(1 + q13));
  return ratio * separation;
}

Перетікання маси через порожнину Роша спричиняє одні з найяскравіших явищ в астрофізиці: нові (термоядерні вибухи на поверхні білого карлика, що акретує речовину), рентгенівські подвійні системи (акреція на нейтронну зорю або чорну діру, що розігріває речовину, яка падає, до мільйонів кельвінів), і парадокс Алгола — коли менш масивна зоря в системі Алгол, як не парадоксально, є більш еволюціонованою, адже раніше вона була важчою зорею, поки не скинула більшу частину своєї маси на супутника.

Поширена помилка: для перетікання маси зорям не обов'язково торкатись одна одної. Газу достатньо досягти точки L1 між двома порожнинами Роша, де сумарний гравітаційний і відцентровий потенціал має сідлову точку — після цього речовина "скочується вниз" на супутника, часто спершу утворюючи акреційний диск.

6. Класифікація подвійних: візуальні, спектроскопічні, затемнювані

Астрономи виявляють і класифікують подвійні системи за тим, як можна спостерігати орбітальний рух:

7. Симуляція кривої блиску затемнюваної подвійної

Спрощена модель кривої блиску розглядає кожну зорю як однорідний диск і обчислює площу перекриття двох дисків у проєкції. Сумарний потік світла падає щоразу, коли один диск перекриває інший:

// Площа перекриття двох кіл (для простих затемнень без потемніння до краю)
function circleOverlapArea(r1, r2, d) {
  if (d >= r1 + r2) return 0;                 // перекриття немає
  if (d <= Math.abs(r1 - r2)) {
    const rMin = Math.min(r1, r2);
    return Math.PI * rMin * rMin;             // повне затемнення
  }
  const d1 = (d*d - r2*r2 + r1*r1) / (2*d);
  const d2 = d - d1;
  const a1 = r1*r1 * Math.acos(d1 / r1) - d1 * Math.sqrt(r1*r1 - d1*d1);
  const a2 = r2*r2 * Math.acos(d2 / r2) - d2 * Math.sqrt(r2*r2 - d2*d2);
  return a1 + a2;
}

// Сумарний потік, в одиницях світностей двох окремих зірок
function combinedFlux(L1, L2, r1, r2, projectedSeparation, primaryInFront) {
  const overlap = circleOverlapArea(r1, r2, projectedSeparation);
  const eclipsedFraction = overlap / (Math.PI * (primaryInFront ? r2 : r1) ** 2);
  const hiddenLum = primaryInFront ? L2 : L1;
  return L1 + L2 - hiddenLum * eclipsedFraction;
}

За один орбітальний цикл з'являються два чіткі провали: головний мінімум, коли тьмяніша, зазвичай холодніша зоря проходить перед яскравішою (або за нею), і мілкіший вторинний мінімум півоберта потому. Відносна глибина й ширина цих двох провалів дозволяють астрономам обчислити радіуси й температури обох зірок — саме так космічні телескопи TESS і Kepler вимірюють властивості затемнюваних подвійних систем (і тим самим методом — транзитних екзопланет).

8. Three.js: рендеринг двох зірок на орбіті

Щоб візуально анімувати подвійну систему, проінтегруйте зведене рівняння руху двох тіл (розділ 2) за допомогою простого симплектичного інтегратора — Verlet за швидкістю утримує орбіту стабільною протягом багатьох обертів, на відміну від наївного інтегрування Ейлера, яке "розкручує" орбіту назовні.

import * as THREE from 'three';

const G = 1.0;          // одиниці сцени, не СІ
const m1 = 1.6;        // сонячних мас (головна зоря)
const m2 = 0.9;        // сонячних мас (супутник)
const M  = m1 + m2;

// Вектор стану відносної відстані (star2 - star1)
let rel = new THREE.Vector3(6, 0, 0);
let vel = new THREE.Vector3(0, 0, 0.65);  // початкова відносна швидкість

function acceleration(r) {
  const dist = r.length();
  const factor = -G * M / (dist * dist * dist);
  return r.clone().multiplyScalar(factor);
}

function stepVelocityVerlet(dt) {
  const a0 = acceleration(rel);
  rel.add(vel.clone().multiplyScalar(dt).add(
       a0.clone().multiplyScalar(0.5 * dt * dt)));
  const a1 = acceleration(rel);
  vel.add(a0.clone().add(a1).multiplyScalar(0.5 * dt));
}

// Кожен кадр: просунути відносну орбіту, потім розділити за відношенням мас
function animate() {
  requestAnimationFrame(animate);
  stepVelocityVerlet(0.01);

  star1Mesh.position.copy(rel.clone().multiplyScalar(-m2 / M));
  star2Mesh.position.copy(rel.clone().multiplyScalar( m1 / M));

  renderer.render(scene, camera);
}

Рендеринг сліду орбіти

Слід орбіти, що згасає позаду кожної зорі, робить форму еліпса одразу видимою. Записуйте позицію кожного кадру в кільцевий буфер фіксованого розміру й оновлюйте геометрію THREE.Line:

const TRAIL_LEN = 400;
const trailPositions = new Float32Array(TRAIL_LEN * 3);
const trailGeo = new THREE.BufferGeometry();
trailGeo.setAttribute('position',
  new THREE.BufferAttribute(trailPositions, 3));
const trail = new THREE.Line(trailGeo,
  new THREE.LineBasicMaterial({ color: 0x60a5fa, transparent: true, opacity: 0.5 }));
scene.add(trail);

let trailIndex = 0;
function pushTrail(pos) {
  trailPositions[trailIndex*3]   = pos.x;
  trailPositions[trailIndex*3+1] = pos.y;
  trailPositions[trailIndex*3+2] = pos.z;
  trailIndex = (trailIndex + 1) % TRAIL_LEN;
  trailGeo.attributes.position.needsUpdate = true;
}
Колір за температурою: надайте кожній зорі THREE.PointLight, забарвлене відповідно до спектрального класу (див. таблицю кольорів у статті про спіральну галактику), щоб масивніша, гарячіша зоря помітно переважала за яскравістю холодніший супутник — гарний штрих для затемнюваної пари червоний карлик/блакитна зоря.

9. Стабільність, хаос і навколоподвійні планети

Дві зорі самі по собі на еліптичній орбіті абсолютно стабільні назавжди (в ідеалізованій ньютонівській задачі двох тіл — без втрат енергії, без збурень). Додайте третє тіло — ще одну зорю чи планету — і система, як правило, стає хаотичною, як у класичній задачі трьох тіл. Планети все ж можуть стабільно обертатися навколо подвійної пари, якщо вони:

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

Числова пастка: навіть стабільна орбіта Кеплера двох тіл помітно "дрейфуватиме", якщо інтегрувати її звичайним кроком Ейлера — енергія не зберігається, і орбіта розкручується назовні або всередину протягом сотень періодів. Завжди використовуйте симплектичний інтегратор (Verlet за швидкістю або leapfrog) для симуляцій орбітальної механіки, як показано в розділі 8.

10. Розширення та вдосконалення

⭐ Подвійна зоряна система

Жива симуляція подвійної зорі анімує дві зорі на орбіті з реальним ньютонівським тяжінням, орбітами пропорційними масам, і рендерингом слідів.

Запустити симуляцію →