Mavis
|
07cc5321d1
|
Phase 2c: eclipse/overpass calculators + live-map camera polish
CI / Lint, typecheck, test, build (pull_request) Failing after 9s
Calculators (apps/live-map/src/calculators/):
- eclipse.ts: findEclipseWindows(bodies, opts) — coarse scan with
threshold-crossing detection, bisection to refine start/end,
ternary search to find peak. Handles eclipse already in progress
at scan-start. Uses sun = parentId===null body.
- overpass.ts: findOverpasses(opts) — coarse scan for local distance
minima, ternary refinement. Targets: vessel, body, ground station
(lat/lon/alt → heliocentric).
UI:
- panels/CalculatorsPanel.tsx: collapsible bottom-center panel with
two tabs. Eclipse form: observer, eclipser, from UT → 3 windows.
Overpass form: observer vessel, target kind+id, max dist → 5 passes.
- timeFormat.ts: shared KSP-time formatters.
Live-map camera polish (apps/live-map/src/scene/):
- camera.ts: CameraController — log-scale distance (z→exp(z)*1e8 m,
range -3..12), spherical orbit around target, smooth lerp to
selected body/vessel. Mouse wheel zooms, drag rotates, click
raycasts for track toggle. Pointer-move-distance gate to
distinguish click from drag.
- glow.ts: additive shader-based atmospheric halo (rim-falloff
fragment shader, BackSide) attached as child of body mesh.
- layout.ts: bodyPositionAt now returns true heliocentric (walks
parent chain); previous version returned parent-relative for
non-root children which broke the eclipse calculator.
Bug fix:
- packages/orbital-math/src/occultation.ts: sign of projection check
was inverted. `proj <= 0` correctly returns 0 (occluder behind
observer), `proj > 0` triggers eclipse computation.
Tests: 28 live-map tests (10 scene + 12 calculator + 6 camera),
45 total across the workspace, all passing.
|
2026-06-02 19:46:00 +00:00 |
|