Spiral Galaxy Observatory (3D)

A Blender-built observatory deck: the galaxy turns on a glass plate, speed bars grow with the rotation curve, and a radio dish tracks a probe star.

Presets

Playback

Visible matter

Masses in units of 10^10 solar masses, lengths in kpc.

Dark halo

NFW or cored isothermal sphere.

Spiral pattern

Arms are a rigid density wave or material (winding) arms.

View and challenge

The Doppler colouring and the inclination graph follow the camera angle.

Camera

Layers

Quality

Model checks

The science

Rotation curve = enclosed mass

For a roughly circular orbit the centripetal acceleration equals gravity: v(r)^2 / r = G M(<r) / r^2, so v(r) = sqrt(G M(<r) / r) for a spherical mass. Outside all the mass, v ~ r^-1/2 (Kepler). Stars at 10-30 kpc in real spirals keep a flat speed instead, which needs M(<r) ~ r: an extended dark halo.

Components used here

  • Bulge: Hernquist sphere, M(<r) = M_b r^2 / (r + a)^2.
  • Stellar and gas discs: exponential surface density Sigma = Sigma_0 e^(-R/R_d). Freeman (1970): v^2 = 4 pi G Sigma_0 R_d y^2 [I_0(y)K_0(y) - I_1(y)K_1(y)], y = R / 2R_d (modified Bessel functions). Its maximum is 0.880 sqrt(pi G Sigma_0 R_d) at R = 2.15 R_d.
  • Dark halo: NFW, M(<r) = M_200 [ln(1+x) - x/(1+x)] / [ln(1+c) - c/(1+c)], x = r/r_s, r_s = r_200/c; or a cored pseudo-isothermal sphere, v^2 = V^2 (1 - arctan(r/r_c)/(r/r_c)).

Speeds add in quadrature: v_tot^2 = v_b^2 + v_d^2 + v_g^2 + v_h^2.

Spiral arms and the winding problem

Angular speed is Omega(r) = v(r)/r. With a flat curve Omega ~ 1/r, so material arms wind into tight spirals within a few rotations (“winding problem”). Real arms are density waves of pattern speed Omega_p: a rigid logarithmic spiral m(phi - Omega_p t) + m ln(r/r_0)/tan(p) = const through which stars drift. Corotation is where Omega = Omega_p; Lindblad resonances at Omega +/- kappa/m, with epicyclic frequency kappa^2 = r d(Omega^2)/dr + 4 Omega^2.

Doppler view

Seen at inclination i the line-of-sight speed of a star at azimuth phi is v sin(i) cos(phi): the approaching side is blue and the receding side red, the classic spider diagram radio astronomers fit.

Honest simplifications

The disc is treated as a thin axisymmetric test-particle system (no self-gravity of the arms, no velocity dispersion or asymmetric drift, no bars), enclosed mass of the visible parts uses v^2 r / G (a spherical approximation, off by ~10-20% for a thin disc), the Milky-Way-like preset is only illustrative, and the “observations” are synthetic: a hidden model plus seeded Gaussian-like noise. Star positions are a random sample, not a catalogue.

What to try

  • Switch the dark halo off: the curve falls (nearly) Keplerian beyond ~10 kpc and chi-square against the mock data explodes.
  • Try to fit the mock points: drag halo mass and concentration, then press Reveal truth.
  • Switch arms to Material and let time run: the arms wind up. Switch to Density wave and they stay put while stars stream through.
  • Set the Doppler view and tilt the disc to 60 degrees: the left-right velocity asymmetry is what telescopes measure.
  • Move the probe radius to the corotation circle and watch it keep pace with the arms.
Loading model...
Loading Blender model...
Rotation curve v(r) (km/s) and mock observations
Angular speed Omega(r), Omega +/- kappa/2 and pattern speed (km/s/kpc)
Enclosed mass inside r (10^10 Msun)
Line-of-sight speed along the major axis (km/s)
Made with 🟠 Blender · Three.js