An interactive, GPU‑accelerated star atlas built from the Hipparcos catalog with real‑time enrichment (temperature, absolute magnitude, estimated radius) plus a provenance‑aware horoscope / ephemeris service. This page documents what data we use, how we transform it, and where to explore.
Data Sources
The primary stellar dataset is a normalized stars.json derived from the Hipparcos catalog (ESA). Each record includes: hip, ra, dec, apparent mag, color index bv, parallax plx, proper motion (pmRA, pmDE), and (optionally) spType.
- File:
stars.json(loaded fully client-side for offline mode). - Backend overlay: ownership & custom naming (SQLite) when API is running.
- Constellations: Stellarium sky culture JSON for line geometry & labels.
Transformation Pipeline
1. Load & Sort
All stars are filtered for numeric magnitude, then sorted ascending (brightest first) to prioritize early instancing & label consideration.
- Filter invalid magnitudes
- Sort by mag
- Index HIP → array slot
2. Enrich
Per star we derive:
- Absolute magnitude:
M = m - 5 (log10(d) - 1) - Temperature (Ballesteros) from B−V
- Luminosity from
Mvs. Sun - Radius via
R = sqrt(L) / (T/Tsun)^2 - Spectral & luminosity classes (heuristics)
3. Position
We apply proper motion offset (J2000 → epoch year) and optional precession. Distance is logarithmically compressed: d' = log10(pc+1) * base * mult.
This preserves spatial feel while keeping far stars inside the camera frustum.
4. Render
Billboard atlas (animated phases) or legacy Phong spheres. Colors from B−V (table or blackbody). Sizing either magnitude/spec heuristic or physical radius compression (power 0.35).
5. Labels
Every star can have a label. Auto mode keeps ≤10 visible: scored by apparent pixel size, distance, and screen-center weight. Grid / all / proximity modes also available.
Screen‑space anchor ensures banner never covers stellar core.
6. Ownership Overlay
When backend is up, ownership & custom names patch star objects at HIP search time; otherwise local catalog values are used.
Running Locally
cd NOVA
npm install
node server/index.js # API (stars, purchases, horoscope)
# Open index.html directly or via a static server
Tip: If the backend is offline, HIP searches & labels still work using stars.json; purchase & ownership fields just remain blank.
Key Features
- 118k+ Stars
- Adaptive Labels
- HIP Search
- Proper Motion & Precession
- Physical Color Modes
- Billboard Atlas Shader
- Constellations
- Star Ownership (API)
- Email Verification (API)
API Snapshot
GET /api/status
GET /api/stars?limit=&offset=&mag_lt=&mag_gt=
GET /api/stars/:hip
POST /api/purchase (if DB available)
POST /api/horoscope (returns sun, moon, ascendant, phase, optional star alignments)
Architecture Overview
The client bundles scene + star controller logic. A small Express server provides data overlays & optional persistence. SQLite (if present) adds purchase / ownership state. Labels & highlight effects are GPU‑friendly sprites with screen‑space placement to avoid overlap with star cores.
Next Steps
- Persist user star presets (visual themes) per account.
- Server‑side batch exports (PNG snapshots, field-of-view capture).
- Rate limiting + API keys for public endpoints.
- Expanded planetary ephemerides (VSOP87) for horoscope accuracy.