Read a giant's temperature off its type as well as its correction, so a radius has one source

d097f4b gave a giant its type's bolometric correction but left its temperature at the dwarf its
colour reads as, and the radius drawn from the two paired a correction for one star with the
temperature of another. The M giants stayed too cool (610 of them at a median 3 275 K, Antares
3 019 against Ohnaka et al.'s 3 660), and a hot giant behind dust got a 30 000 K star's correction
at the temperature of an A star: Menkib, O7.5 Iab at B−V 0.02, was drawn at 9 517 K and 95 R☉,
Alp Cam, O9.5 Ia, at 338, where 14 and 21 are published. Rigel went from 81 to 102 R☉, Alnilam
from 57 to 108.

giantSurface now reads both off the type: G to M giants off van Belle et al.'s (2021, table 8)
interferometric scale, fitted to 191 giants from G1 to M7.75 III, with the correction the dwarf
sequence has at that temperature; O to F giants off the dwarf of their type, for which the table
gains Mamajek's O3 to O9.5 rows (without colours, which do not tell O types apart); carbon and S
stars, which no row reads and which got the Sun's −0.06 at 2 420 K, off the medians of Bergeat et
al. (2001): 2 990 K over the 441 stars of their table 10 and −2.83 over the 383 with a V magnitude,
counted again from VizieR here.

On the shipped catalogue (drawn radius in R☉, before → after, published): Antares 690 → 410 at
3 730 K (680; its luminosity from V is 0.4 dex under Ohnaka's), Aldebaran 48.5 → 44.0 (44.2),
Arcturus 22.5 → 24.1 (25.4), Menkar 160 → 103, Gacrux 118 → 73, Rigel 102 → 67 (74.1), Alnilam
108 → 33, Menkib 95 → 6.9 (14, the dust still dims it), Alp Cam 338 → 31, La Superba 133 → 311
(315) and 544 → 6 977 L☉ (8 090 from Bergeat's bolometric magnitude), 19 Psc 130 → 305 (295).
The 610 M giants now sit at a median 3 644 K (p10 3 386, p90 3 816). Against their own radii
before, the O giants' fall to a median 0.08, the B giants' to 0.62, the M giants' to 0.68, and the
K giants' rise by 8 %. It is not better everywhere: Pollux goes from 8.6 to 10.1 against 8.8,
119 Tau from 700 to 326 against 587, and Mintaka and Alnitak, placed by Hipparcos at 212 and 226
pc where they are about 380, come out 8.8 and 11.8 against 13 to 20.

Tests: the giant case in stellar.spec now checks Antares's temperature against Ohnaka's, and
Aldebaran (to a tenth) and Rigel (to a fifth) against their interferometric radii; new cases give
Menkib its type's 36 100 K and a radius within 2.5 times the published one, and La Superba a
luminosity within a fifth of Bergeat's and 2 990 K; spectral.spec covers dwarfSequenceAtType. The
scene's supergiant case now expects Antares at 350-480 R☉ where it pinned 600-760. Controls:
the luminosity or the temperature ignoring giantSurface, G-M giants read as the dwarf of their
type, their correction taken off the type instead of their temperature, O giants through the
textbook colour clamped at B0, the type index off by one subclass and carbon stars unhandled each
fail the named test.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-29 23:51:20 +02:00
co-authored by Claude Opus 5.5
parent 06b4ff64b5
commit a8f394cf57
5 changed files with 138 additions and 31 deletions
@@ -1014,14 +1014,15 @@ describe('GalaxySystemSceneComponent camera-flight transitions', () => {
expect(scene.hudReadouts().find((readout) => readout.label === 'Radius')?.value).toBe('0.141 solar radii');
});
it('keeps the camera three radii out from a supergiant drawn at the radius its colour and brightness give', async () => {
it('keeps the camera three radii out from a supergiant drawn at the radius its type and brightness give', async () => {
const scene = await enter(ANTARES);
const radius = scene.starMarkerGeometry.parameters.radius;
// 690 R☉ against the 680 Ohnaka et al. (2013) measure: 3.2 AU.
expect(radius / SUN_RADIUS_AU).toBeGreaterThan(600);
expect(radius / SUN_RADIUS_AU).toBeLessThan(760);
// 410 R☉, 1.9 AU, at M1's 3 730 K: short of the 680 Ohnaka et al. (2013) measure, whose
// luminosity is 0.4 dex above what V gives at the catalogue's distance.
expect(radius / SUN_RADIUS_AU).toBeGreaterThan(350);
expect(radius / SUN_RADIUS_AU).toBeLessThan(480);
expect(scene.controls.minDistance).toBeCloseTo(closestApproachAu(radius), 9);
expect(scene.controls.minDistance).toBeGreaterThan(9);
expect(scene.controls.minDistance).toBeGreaterThan(5);
// Settled where its disc stays inside the ring of its neighbours' names, not pressed up to it.
expect(engine.getCamera().position.length()).toBeGreaterThan(1.2 * scene.controls.minDistance);
});