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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Calculators (apps/live-map/src/calculators/):
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.
minima, ternary refinement. Targets: vessel, body, ground station
(lat/lon/alt → heliocentric).
UI:
two tabs. Eclipse form: observer, eclipser, from UT → 3 windows.
Overpass form: observer vessel, target kind+id, max dist → 5 passes.
Live-map camera polish (apps/live-map/src/scene/):
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.
fragment shader, BackSide) attached as child of body mesh.
parent chain); previous version returned parent-relative for
non-root children which broke the eclipse calculator.
Bug fix:
was inverted.
proj <= 0correctly returns 0 (occluder behindobserver),
proj > 0triggers eclipse computation.Tests: 28 live-map tests (10 scene + 12 calculator + 6 camera),
45 total across the workspace, all passing.