Read a dwarf with a type and no colour at its type's row of the dwarf sequence

A non-giant with a spectral type but no colour took its temperature off the textbook colour
spectralTypeToColorIndex gives its type, read on Pecaut & Mamajek's table, and its bolometric
correction off the old textbook anchors. The table puts those colours elsewhere: M8's B-V 1.88
is M5-M5.5 there, 3 001 K where M8 V is 2 570, and the anchors give M8 -3.92 where the table has
-5.65. GJ 3655 (M8, 14.35 pc) was drawn at 0.035 solar radii, a third of Jupiter, where its
type's row gives 0.106 (Mamajek's M8 V: 0.114). Every O type came out B0's 31 400 K.

Both now read dwarfSequenceAtType, which already existed for the giants, and a G magnitude is
carried to V at the type's G-V too. On the published catalogue, of the 835 non-giant stars with
a band, a type and no colour, those more than 200 K off their type's row go from 21 to 0, those
with a radius more than 1.5 times off it from 7 to 1 and a luminosity from 10 to 1 (the one left,
Oph 11, is a G-band star). GJ 3849 (dM9) goes from 0.030 to 0.089 solar radii, GJ 3855 (M6.5)
from 0.040 to 0.087.

Two tests pinned the textbook path and now read the table: M5Ve with no colour is 3 060 K, not
3 106, and K5 tints as B-V 1.15, its row, not 1.105. An O8 star is 35 100 K, its row, not B0's.
Controls: reading the temperature through the textbook colour again fails "is drawn at its
type's row of the dwarf sequence" (with the three updated tests); reading the correction off the
anchors again fails that test alone.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-30 15:41:01 +02:00
co-authored by Claude Opus 5.5
parent 89c2568018
commit 206e88ae85
3 changed files with 35 additions and 23 deletions
@@ -64,9 +64,9 @@ describe('colorIndexToRgb', () => {
});
it('matches the colour the same spectral type would give explicitly', () => {
// K5 sits halfway between the K anchor (0.81) and the M anchor (1.40).
// K5's row of the dwarf sequence is at B−V 1.15.
const derived = colorIndexToRgb(null, 'K5');
const explicit = colorIndexToRgb(1.105);
const explicit = colorIndexToRgb(1.15);
expect(derived.r).toBeCloseTo(explicit.r, 6);
expect(derived.g).toBeCloseTo(explicit.g, 6);