Подвійні зоряні системи — орбіти двох тіл, порожнини Роша та симуляція у Three.js
Більшість зірок — не самотні сонця, як наше: понад половина належить до подвійних систем. Дві зорі, зв'язані тяжінням, підпорядковуються тій самій фізиці, що й планета навколо сонця, але з нюансом: якщо вони підійдуть близько, одна може "відривати" речовину від іншої.
1. Що таке подвійна зоряна система?
Подвійна зоряна система складається з двох зірок, зв'язаних взаємним тяжінням, які обертаються навколо спільного центра мас (баріцентра). Огляди найближчих зірок свідчать, що приблизно 50–85% зірок сонячного типу мають щонайменше одного зоряного супутника, залежно від спектрального класу — масивні зорі класів O та B майже завжди кратні, тоді як маломасивні червоні карлики частіше самотні. Наше Сонце незвичне тим, що воно (наскільки відомо) є самотньою зорею.
Подвійні системи сильно різняться за масштабом. Деякі пари обертаються з періодами в кілька годин, майже торкаючись одна одної; іншим потрібні сотні тисяч років на один оберт, а відстань між ними — світловий рік і більше. Відома зоря Альфа Центавра насправді є потрійною системою: Альфа Центавра A та B утворюють тісну подвійну з періодом 80 років, тоді як тьмяний червоний карлик Проксима Центавра обертається навколо цієї пари на відстані приблизно 13 000 а.о.
2. Задача двох тіл і зведення до одного тіла
Дві точкові маси m₁ і m₂ притягуються
одна до одної за законом тяжіння Ньютона. На перший погляд
здається, що для цього потрібні два окремі рівняння руху, але
класичний прийом — перехід до
відносної координати — перетворює задачу на
одну задачу одного тіла, точнісінько як планета навколо Сонця.
Зведена маса: μ = (m₁·m₂) / (m₁ + m₂)
Рівняння руху для відносного вектора:
d²r/dt² = −G(m₁ + m₂)·r / |r|³
Це формально ідентично одній частинці масою μ, що обертається навколо нерухомого центру із загальною масою M = m₁ + m₂.
Іншими словами: розв'яжіть звичайну орбіту Кеплера двох тіл для
вектора розділення між зірками, використовуючи сумарну
масу M = m₁ + m₂. Потім розділіть цю відносну
орбіту між двома реальними зорями обернено пропорційно їхнім
масам — масивніша зоря описує меншу еліпсу ближче до баріцентра.
r₁ = −(m₂ / M) · r
Положення зорі 2 відносно баріцентра:
r₂ = (m₁ / M) · r
3. Третій закон Кеплера для подвійних систем
Для еліптичної відносної орбіти з великою піввіссю
a (сумою великих піввісей обох зірок,
a = a₁ + a₂), орбітальний період безпосередньо
випливає з ньютонівського узагальнення третього закону Кеплера:
або у зручних астрономічних одиницях:
P²(роки) = 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. Центр мас і відношення мас
Оскільки обидві зорі обертаються навколо спільного баріцентра, їхні індивідуальні великі піввісі обернено пропорційні масам. Важка головна зоря майже не рухається; легкий супутник описує набагато ширшу орбіту:
Відношення мас: 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₂:
Справедливо для всього діапазону 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;
}
Перетікання маси через порожнину Роша спричиняє одні з найяскравіших явищ в астрофізиці: нові (термоядерні вибухи на поверхні білого карлика, що акретує речовину), рентгенівські подвійні системи (акреція на нейтронну зорю або чорну діру, що розігріває речовину, яка падає, до мільйонів кельвінів), і парадокс Алгола — коли менш масивна зоря в системі Алгол, як не парадоксально, є більш еволюціонованою, адже раніше вона була важчою зорею, поки не скинула більшу частину своєї маси на супутника.
6. Класифікація подвійних: візуальні, спектроскопічні, затемнювані
Астрономи виявляють і класифікують подвійні системи за тим, як можна спостерігати орбітальний рух:
- Візуальні подвійні: розташовані достатньо далеко одна від одної, щоб телескоп розрізняв обидві зорі як окремі точки світла, а їхній відносний рух можна відстежувати роками (Альфа Центавра A/B — візуальна подвійна).
- Спектроскопічні подвійні: занадто тісні, щоб розрізнити візуально, але орбітальний рух періодично зсуває спектральні лінії кожної зорі через ефект Доплера — синє зміщення при наближенні до нас, червоне — при віддаленні. Більшість тісних подвійних виявляють саме так.
- Затемнювані подвійні: орбітальна площина орієнтована майже строго "з ребра" до Землі, тому кожна зоря періодично проходить перед іншою, спричиняючи періодичний провал сумарної яскравості — криву блиску. Алгол (від арабського "гуль") став першою розпізнаною затемнюваною подвійною — його регулярне потьмяніння колись вважали надприродним.
- Астрометричні подвійні: видима лише одна зоря, але її положення на небі похитується, коли вона обертається навколо невидимого супутника — саме так масу Сіріуса B передбачили математично за десятиліття до того, як його вперше спостерегли телескопом у 1862 році.
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. Стабільність, хаос і навколоподвійні планети
Дві зорі самі по собі на еліптичній орбіті абсолютно стабільні назавжди (в ідеалізованій ньютонівській задачі двох тіл — без втрат енергії, без збурень). Додайте третє тіло — ще одну зорю чи планету — і система, як правило, стає хаотичною, як у класичній задачі трьох тіл. Планети все ж можуть стабільно обертатися навколо подвійної пари, якщо вони:
-
Навколоподвійні (циркумбінарні): обертаються
далеко за межами обох зірок, приблизно на
a_planet > 3–4 × a_binaryдля стабільності — як вигаданий Татуїн і реальна Kepler-16b. - Навколозоряні (S-типу): обертаються тісно навколо лише однієї зорі, значно всередині гравітаційного впливу супутника — стабільні, якщо супутник достатньо далеко.
Орбіти між цими двома стабільними зонами динамічно нестабільні й вилітають із системи або зіштовхуються протягом кількох тисяч обертів — пряме, перевірюване наслідок хаотичної динаміки трьох тіл, яке простий N-тільний інтегратор (див. статтю про N-тільну задачу) може продемонструвати, скануючи початкові відстані планети й перевіряючи, які з них виживають після тривалого інтегрування.
10. Розширення та вдосконалення
- Ексцентричні орбіти: задайте початкову відносну швидкість нижче або вище значення для кругової орбіти, щоб отримати еліптичні траєкторії, і спостерігайте, як орбітальна швидкість змінюється з відстанню (другий закон Кеплера — рівні площі за рівні проміжки часу).
- Контактні подвійні: зменшіть відстань, поки обидві зорі не заповнять і не перекриють свої порожнини Роша, утворивши спільну, гантелеподібну фотосферу — відрендерте це єдиною деформованою сіткою (у стилі змішування метакуль) замість двох сфер.
-
Акреційний диск: додайте сплющений частинковий
диск навколо зорі, яка набирає масу, використовуючи ту саму
техніку частинок
InstancedMeshзі симуляції спіральної галактики, з адитивним прохідом bloom для гарячого внутрішнього диска. - Повне сканування трьох тіл: чисельно проінтегруйте тестову навколоподвійну планету на різних початкових відстанях і побудуйте графік того, які з них виживають, а які викидаються — компактна, наочна демонстрація орбітального хаосу.
- Підгонка реальної кривої блиску: розширте модель кривої блиску з розділу 7 потемнінням до краю (зорі здаються тьмянішими біля краю) для точнішого збігу з реальними даними Kepler/TESS.
⭐ Подвійна зоряна система
Жива симуляція подвійної зорі анімує дві зорі на орбіті з реальним ньютонівським тяжінням, орбітами пропорційними масам, і рендерингом слідів.