Obiekt dyskowy, który powinien był dawno się roztrącić
Galaktyka spiralna obraca się różnicowo: gwiazdy blisko centrum wykonują okrążenie znacznie szybciej niż te dalej, ponieważ prędkość orbitalna pozostaje na poziomie podobnym do stałego, gdy obwód orbity rośnie z promienia. Jeśli ramka spiralna była niewzruszonym gruźlcem tych samych gwiazd w nieskończoność, to ta różnicowa rotacja powinna by była skręcić ją w ciasny, niewidzialny spiralny kształt w ciągu kilku obrótów galaktycznych — co oznacza kilka stuleci, czyli małą część wieku galaktyki. W rzeczywistości galaktyki mają biliony lat i nadal pokazują dwa lub cztery jasne, otwarte ramy. Ta sprzeczność nazywana jest problemem skręcania, który nie został rozwiązany aż do lat 60. XX wieku.
Rozwiązaniem, zaproponowanym przez Chia-Chiao Lin i Franka Shu (1964), jest to, że ramka spiralna nie jest niewzruszonym gruźlcem gwiazd — to jest falą gęstości: wolno obracającą się wzorem z[+++przeciągnięcie+++]napęcenia grawitacyjnego, przez który przechodzą gwiazdy, jak ruch ruchomki na autostradzie, która utrzymuje swoją formę, podczas gdy pojedyncze samochody jadą przez nią. Wzór obraca się jednolitym tempem Ω_p, podczas gdy każda gwiazda ma własną szybszą lub wolniejszą prędkość orbitalną. Gwiazda przemieszcza się do ramy, jest grawitacyjnie napęczniana i na chwilę wolniejsza, a potem wraca z powrotem przed wzorem. Ramka przeżywa w nieskończoność, ponieważ to jest falę stojąca, a nie stała grupa gwiazd.
Dlaczego ramy świecą blaskiem niebieskim: połączenie z gazem
Sam densedensjiowa fala gwiazdowa to troszczyca się o nadmierną gęstość gwiazd o procentowym stopniu — nie jest to błyszczące ramy, jakich fotografie pokazują. Światło widzialne pochodzi z gazu. Kluczowe są interstelarne chmury, które, w przeciwieństwie do gwiazd, kolidują i stracają energię orbitalną podczas kompresji, co powoduje ich szybkie zgrupowanie na minimum potencjału fali i upadanie w nowe gwiazdy. Wynikiem jest falowata masa młodych, krótkowiecznych, ekstremalnie jasnych gwiazd o barwie niebiesko-białościowej typu O i B, które śledzą ramę — te gwiazdy żyją tylko kilka milionów lat, za mało, aby odlecieć z miejsca, gdzie się formują, co maluje ramę w barwę, której stare, pędzące gwiazdy nigdy nie byliby w stanie wytworzyć.
Umieszczanie 80 000 gwiazd bez 80 000 aktualizacji fizycznych
Samodzielna symulacja tego z użyciem rzeczywistej grawitacji to problem N-ciał: 80 000 punktów wzajemnie przyciągających powoduje biliony dwupartycji interakcji na krok, co jest daleko poza czasem rzeczywistym w zakładce przeglądarki. Tego strony zamiast tego używa modelu kinematycznej fali gęstościowej: każda gwiazda ma stałą przewodniczącą promień i kąt urodzenia, a położenie na ekranie w każdym klatce pochodzi z funkcji spiralnej o formule zamkniętej, nie z integrated force.
θ = θ0 + omega(r) * t // rotacja różniczkowa, szybsza bliżej centrum + pitch * Math.log(r / r0); // przesunięcie fazowe spiralne logarytmicznej x = r * Math.cos(θ); z = r * Math.sin(θ); // kolor i jasność niszczone są bliżej maksimum gęstości ramy armPhase = (θ - pitch * Math.log(r / r0)) % (2 * Math.PI); Spiral logarytmiczna — krzywa r = r₀·e^(θ/tan α) dla ustalonego kąta ukośnego α — to, co najlepiej pasuje do rzeczywistych ram spiralnych; ramy galaktyki Mlecznej mają kąty ukośne około 10–15°. Gwiazdy bliżej maksimum gęstości ramy są rysowane jasniej i nieco bluźniercowatym kolorzem, aby symulować ciągłą formację gwiazd, a buldoga i halę renderuje jako osobne populacje cząstek z własnymi profilami radialnymi, ponieważ galaktyka to nie jedna dysk, ale trzy powłoki nadmiarowe.
theta = theta0
+ omega(r) * t // differential rotation, faster near centre
+ pitch * Math.log(r / r0); // logarithmic-spiral phase offset
x = r * Math.cos(theta);
z = r * Math.sin(theta);
// colour and brightness biased near the arm's density maximum
armPhase = (theta - pitch * Math.log(r / r0)) % (2 * Math.PI);
Instancjonowanie w GLSL: dlaczego 80 000 sprite’ów kosztuje jedno wywołanie rysowania
Rysowanie 80 000 niezależnych billbordej — jednym wywołaniem rysowania na gwiazdę — zniszczyby szybkość ramki dawny przed tym, jak fizyka to dokona. Instancjonowanie przekazuje atrybuty każdej gwiazdy (promień, kąt, kolor, rozmiar) raz do pojedynczego bufora i pyta GPU o rysowanie jednej podstawowej geometrii (małego kwadratu) tysiące razy w pojedynczym wywołaniu, obliczając pozycję końcową każdego wystąpienia w shaderze wektorowym zgodnie ze swoim atrybutem. CPU dotyka danych gwiazd raz na ramkę do aktualizacji fazowej; GPU dokonuje reszty w paralelu, co jest powodem, dla którego 80 000 ruchomych punktów i rozświetlenie bulge mogą utrzymać 60 fps w WebGL, gdzie scenografia prosta nie byliby w stanie dostać się do jednej dziesiątej takiego wyniku.
Często zadawane pytania
Dlaczego ramy galaktyk nie zwiędają w ciągu czasu?
Bo rama jest falą gęstości, a nie ustalonym grupem gwiazd. Wzór fali porusza się jako spadłowa spiralka o własnej prędkości wzrostu gęstości, podczas gdy pojedyncze gwiazdy orbitytoją przez nią z własnymi, ogólnie różnymi prędkościami — więc kształt utrzymuje się, nawet jeśli gwiazdy wewnątrz niego są stale zmieniające się.
Dlaczego ramy galaktyk są niebieskie, a reszta dysku żółta?
Gaz kompresuje się bardziej nagle niż gwiazdy przy minimum fali gęstościowej i kleszczy się do nowych gwiazd tam. Najjaśniejsze z nich to masowe, ekstremalnie ciepłe gwiazdy typu O i B, które wypalają się w ciągu milionów lat — za szybko, aby uciec z ramy — więc rama jest przede wszystkim oświetlona młodymi, niebieskimi, krótkotrwałymi gwiazdami.
Czy ta symulacja używa rzeczywistej grawitacji między gwiazdami?
Nie. Symulowanie rzeczywistej wzajemnej grawitacji dla 80,000 ciał nie jest możliwe w czasie rzeczywistym w przeglądarce, więc gwiazdy są umieszczone kinematycznie zgodnie z formułą spiralki logarytmicznej fal gęstościowej, a nie całkowanej z sił — widocznie przystosowana do tego, jak rzeczywiste dyskowe galaktyki zachodzą, bez podstawowego rozwiązań N-ciał.
Wypróbuj na żywo
Wszystko powyżej działa bezpośrednio w Twojej przeglądarce — otwórz 80k Particles Spiral Galaxy Simulation i zmieniaj parametry podczas działania. Nic nie jest instalowane ani przesyłane na serwer, cały model działa w jednej karcie.
▶ Otwórz symulację 80k Particles Spiral Galaxy Simulation