The readout named Hipparcos, Yale and Gliese while 378 775 of the 455 608 stars are described by Gaia DR3, printed one "Magnitude" for G and V alike, and gave every distance to the parsec. The band cannot be read off the star's source, which records whose position it has: 62 002 stars Gaia places keep HYG's V and B-V, and the 575 hosts renamed after their planets are Gaia's, in G. stars-meta.bin gains two byte columns, 14 to 16 bytes a star (6 378 512 to 7 289 728 bytes; gzip -9 2 804 049 to 3 110 991). One holds the magnitude's band (V 76 555 stars, G 378 744, none 309, whose magnitude is a stand-in), which colour the colour index is (B-V 75 203, BP-RP 376 703), and whether the distance is Gaia's parallax. The other holds the distance's relative error as its square root in 255ths: a step is 0.08 % of distance at 1 %, 0.35 % at 20 %, and 100 % is the top. encode, decode, BYTES_PER_STAR_META and the build.ts round trip cover both; no workflow reads the format. Where the errors come from: - Gaia rows keep the parallax_error their query already fetched: median 0.3 %, 90th percentile 1.2 %, at most 20 %, the query's own cut. - A HYG star at Gaia's distance takes the cross-match's parallax_over_error, and a star merged into a Gaia entry keeps that entry's error with its position. - The 3 067 Hipparcos stars that keep their Hipparcos distance, Rigel, Deneb and Alnilam among them, take e_plx from van Leeuwen's 2007 reduction: a new cached query of public.hipparcos_newreduction on the ESA archive, whose 117 955 rows HYG's distances invert. - The archive's stars take sy_disterr1/2 from pscomppars, in a query and cache file of their own so the composite rows already cached were not refetched. - 439 distances have no published error: 357 Gliese rows and 82 archive hosts. Of the errors, 392 786 are 1 % or less and are not printed; 61 156 print as "117 ± 12 pc" to the distance's own digits; 1 196 between 20 and 100 %, and 30 past it, print as the range the parallax gives, since a symmetric error in parallax is a lopsided one in distance. The star card (measured on the dev server) now reads, for example: - Rigel: 265 ± 23 pc, V 0.18, B-V -0.03, source HYG. - Deneb: 433 ± 60 pc. - Alnilam: "476 pc to 833 pc" (Hipparcos 1.65 ± 0.45 mas). - Gaia DR3 5612323414549657984: 111 ± 2 pc, G 4.63, BP-RP -0.15, source Gaia DR3. - Proxima Centauri: 1.30 pc, V 11.01, source "HYG, Gaia DR3 distance". - TRAPPIST-1: G 15.62, BP-RP 4.90, source Gaia DR3. - Kepler-186: V 15.14, source NASA Exoplanet Archive. The neighbourhood's subtitle reads "Gaia DR3 378,775 · HYG 73,556 · NASA Exoplanet Archive 3,277", counted by the catalogue describing each star. build.ts validateStars now fails a catalogue with more than 1 000 stars without a band (309 today) or without a distance error (439). Dropping G from the Gaia rows gave 379 040 without a band, and dropping their parallax_error gave 441 216 without an error; both runs failed. Decoding the catalogue in Node took a median 29 ms before and 24 ms after (nine runs each, within noise). In the app, five cold boots gave a 654-786 ms long task after the data landed and the HUD at 1.83-2.07 s. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
60 lines
2.6 KiB
TypeScript
60 lines
2.6 KiB
TypeScript
/**
|
||
* A single star from Gaia DR3, HYG (Hipparcos/Yale/Gliese) or the NASA Exoplanet Archive — see
|
||
* `source` — positioned relative to the
|
||
* Sun in the galaxy-scale coordinate system (parsecs). The same positions are also packed
|
||
* into a compact binary buffer (`stars.bin`, in index order) for fast bulk rendering; this
|
||
* record format (`stars-index.json`) is used for search, labels, and lookups by id/name.
|
||
*/
|
||
export interface StarRecord {
|
||
id: number;
|
||
name: string;
|
||
x: number;
|
||
y: number;
|
||
z: number;
|
||
magnitude: number;
|
||
spectralType: string;
|
||
/**
|
||
* Colour index — B-V, or Gaia's BP-RP where `colorSystem` says so — or `null` where the
|
||
* catalog has no photometry. Deliberately nullable rather than defaulted: `0` is a real,
|
||
* meaningful colour index (a hot blue-white A-type star), so using it to stand for "unknown"
|
||
* silently mis-colours those stars. Consumers resolve the gap from `spectralType`; see
|
||
* `colorIndexToRgb`.
|
||
*/
|
||
colorIndex: number | null;
|
||
/**
|
||
* The band `magnitude` was measured in: Johnson V (HYG, and the archive where it has one) or
|
||
* Gaia's G, which for a red dwarf reads up to three magnitudes brighter than V. Absent where no
|
||
* survey measured the star and `magnitude` is the ETL's stand-in.
|
||
*/
|
||
magnitudeBand?: 'V' | 'G';
|
||
/**
|
||
* Which colour `colorIndex` is: Johnson B−V, or Gaia's BP−RP, which is larger for the same star
|
||
* — 0.82 against 0.65 for a G2 dwarf like the Sun, 3.35 against 1.83 for an M5 dwarf (Pecaut &
|
||
* Mamajek). Absent with it.
|
||
*/
|
||
colorSystem?: 'B-V' | 'BP-RP';
|
||
/**
|
||
* Relative uncertainty of the distance, σd/d: the relative error of the parallax it was
|
||
* inverted from, which to first order is the same. Absent where none was published.
|
||
*/
|
||
distanceError?: number;
|
||
/** Whether the distance is Gaia DR3's parallax, whichever catalogue describes the star. */
|
||
distanceFromGaia?: boolean;
|
||
/**
|
||
* Which catalogue this star's position came from, once more than one contributes. Absent for a
|
||
* single-source build; see `star-merge.ts`, where overlapping catalogues are reconciled and
|
||
* the better-measured parallax wins.
|
||
*/
|
||
source?: string;
|
||
/**
|
||
* Proper motion in milliarcseconds a year, in right ascension (times cos δ) and declination,
|
||
* where the source measured one. Only the ETL sets these, for `star-merge.ts` to recognise two
|
||
* entries of one star whose positions disagree; the assets do not carry them.
|
||
*/
|
||
pmRaMasYr?: number;
|
||
pmDecMasYr?: number;
|
||
}
|
||
|
||
/** HYG id used for the Sun itself, so solar-system bodies can reference their host star. */
|
||
export const SUN_STAR_ID = 0;
|