docs(cockpit): describe orbit's Live Signals rows and site focus

This commit is contained in:
Denis Groshev committed 2026-11-09 01:56:30 +01:00
1 parent dd02068ce9
commit 7b844792be
1 file changed
+64 -34
+64 -34
View File
@@ -1643,7 +1643,7 @@ companions, its own orbit ring and its detection bracket, and draws every
other orbit ring (the ISS ring included) at 30% of its alpha; other
satellites' points and labels stay. Scene clicks and the layer's Escape are
ignored by the satellites layer while it is ridden (a click on a mapped
point focuses it; see below). The optical zoom steps 1×, 2×, 4× and 8× for
site focuses it; see below). The optical zoom steps 1×, 2×, 4× and 8× for
every satellite with `+` (or `=`) and `-` (or `_`), the panel's buttons and
the mouse wheel (one step per notch; trackpad scrolling is summed to a step):
the 1× frame is 60° vertical in low orbit and fits the Earth's disk with
@@ -1700,42 +1700,72 @@ imagery under the view has loaded (at most 2.5 s, `zoomSettleHolding`), then
the reticle locks. The look keys and zoom keys keep the bridge's focus
guards.
A single click on a mapped ground point (a ground point of a layer that is
on, through the shared context store: Mapped Installations, fires, local
data packs; aircraft, vessels and satellites are not targets) keeps the
camera on it (`src/ui/cockpitOrbitalFocus.js`, geometry in
`src/cockpitOrbitalFocus.js`). The look is aimed each frame from the
satellite's position to the point's Earth-fixed position in the same
track-up nadir frame the arrows tilt, so the point stays at the centre as
the satellite moves; the turn onto it (and between points) eases what is
left of the swing with the arrows' easing on a slower clock (250 ms time
constant, about 0.75 s to 95%), then holds the point exactly, and cuts under
`prefers-reduced-motion`. A click anywhere else, FOCUS on the focused point,
NADIR, Home or `0` ends the focus and the view eases back to nadir on the
same clock; an arrow ends it and tilts on from where the view is. The focus
also ends by itself, easing back, when the point leaves the reach (either
tilt axis past ±45°, or the point below the satellite's horizon), when its
layer is turned off or its record is dropped, and with the orbital view. A
mapped point beyond the reach cannot be focused. While focused the readout
gives the single off-nadir angle to the point, as image metadata does
In orbit the briefing's Live Signals page (OBSERVED / MAPPED PINGS) lists
what is around the satellite, as the aircraft Cockpit lists the contacts
of its Contacts snapshot (`src/ui/cockpitOrbitalSignals.js`): five rows at
most, rebuilt once a second with stable keys, so a row keeps its place and
time. TRACK ACQUIRED stays first. Then:
- **Sites**: the Mapped Installations layer's loaded records around the
sub-satellite point (`getNearby`, asked only as far as the reach extends
over the ground) that face the satellite and lie within the off-nadir
reach, nearest to nadir first, the focused site always among them. A row
reads the site's name over its class and off-nadir angle; its button
(`Keep the camera on …`) focuses the site, and on the focused site's row,
marked as the subject is (`FOCUS · …`, `Release the camera from …`), ends
the focus. With Mapped Installations off the layer keeps its records, so
nothing is listed then: a SITES STANDBY row says to turn the layer on.
- **Satellites**: the nearest shown satellites to the ridden one, debris
left out (the satellites layer's bounded `getNearestPositions`, measured
from the satellite itself), with their bearing from the top of the frame
and distance. A row (`Ride …`) rides that satellite. While there is a
satellite ridden before this one, a RETURN · *name* row goes back to it; if
that satellite has left the catalogue it is dropped and RETURN offers the
one before. Riding stays in orbit: the satellites layer tracks the new
satellite (`trackById`), the Cockpit takes the camera back at once and
marks it as the ridden subject, any ground focus ends with the view easing
back to nadir, and the camera hops to the new satellite along the great
circle over 1.2 s (cut under reduced motion), keeping the zoom. Until the
camera is on the new satellite the page shows only TRACK ACQUIRED and
RETURN, then rebuilds at once.
Sites take two rows while satellites fill the rest, more when there are
fewer satellites. The Contact card stays hidden in orbit.
The focus (`src/ui/cockpitOrbitalFocus.js`, geometry in
`src/cockpitOrbitalFocus.js`) aims the look each frame from the satellite's
position to the site's Earth-fixed position in the same track-up nadir
frame the arrows tilt, so the site stays at the centre as the satellite
moves. The turn onto it (and between sites) eases what is left of the swing
with the arrows' easing on a slower clock (250 ms time constant, about
0.75 s to 95%), then holds the site exactly, and cuts under
`prefers-reduced-motion`. A single click on a site's marker focuses it too:
the pick is resolved through the layer's own pick ids (`findByPick`: a named
marker's `{ installationId }` or a site entity). A click anywhere else, the
focused site's row, NADIR, Home or `0` ends the focus and the view eases
back to nadir on the same clock; an arrow ends it (or the ease back) and
tilts on from where the view is. The layer reloads its thinned view as the
camera moves (about once a second in orbit), so a site in view can leave
its records for a moment: while the layer is on, a site seen in the last
10 s stays a candidate (sites do not move), so the rows hold still and a
row's site can be focused, and a focused site keeps its last position. The focus ends by
itself, easing back, when the site leaves the reach (either tilt axis past
±45°, or the site below the satellite's horizon), when the layer is turned
off, when another satellite is ridden, and with the orbital view. A site
beyond the reach cannot be focused. While focused the readout gives the
single off-nadir angle to the site, as image metadata does
(`OFF-NADIR 23.4°`, updated on the HUD's beat and not announced), names it
in a polite live region (`FOCUS · Camp Alpha`), and the swath reads
approximate as for a tilt, scaled by the tilt onto the point. Clicks still
approximate as for a tilt, scaled by the tilt onto the site. Clicks still
reach Cesium's own handler and never untrack the satellite; a click a tool
owns (drawing) is ignored, and the draw tool still borrows the click while
it draws. A double-click on a mapped ground point keeps or starts the focus
on it and never reaches Cesium's double-click, which would track the point
and end the view (the Cockpit's double-click routing in
`src/ui/cockpitInput.js`); any other double-click goes on as before. Under the readout, IN REACH · *n* (a disclosure) lists the mapped
points facing the satellite that are within the reach or in the frame now,
nearest to nadir first, at most 12 (with NEAREST 12 OF *n* beyond that),
rebuilt once a second. A row opens the point's details: position, source and
its OpenStreetMap tags (or its layer's properties); FOCUS on a row focuses
it, switches to it from another point, or ends the focus held on it, and is
marked unavailable (`aria-disabled`) for a point in frame but beyond the
reach. A row that leaves the list hands keyboard focus to the disclosure.
`src/ui/cockpitOrbitalFocus.test.mjs` covers the easing in and out, the
reach release, list switching, click handling and the readout.
it draws. A double-click on a site keeps or starts the focus on it and
never reaches Cesium's double-click, which would track the site and end the
view (the Cockpit's double-click routing in `src/ui/cockpitInput.js`); any
other double-click goes on as before. `src/ui/cockpitOrbitalFocus.test.mjs`
covers the rows, the easing in and out, the reach release, switching sites
and satellites, the hop, the layer turned off, click handling and the
readout, against the layers' method shapes.
The HUD (`#cockpit-hud[data-subject='satellite']`, body class
`cockpit-orbit`) mounts `CockpitOrbital` over the picture: name, class,
@@ -1765,7 +1795,7 @@ unfolds the two element lines; each row is left out when the satellites layer do
know it. The
aircraft and bridge instruments, tapes, compass, radar, look controls,
position readout, route card and Contact card are hidden; the vision-style
switcher, briefing card (Local and Regional for the sub-satellite point; the
switcher, briefing card (Live Signals as above, Local and Regional for the sub-satellite point; the
regional brief refreshes at most once a minute) and the reset and EXIT ORBIT
buttons stay, square-cornered like the bridge. Exit (`Escape`, EXIT
ORBIT) restores the camera's own field of view exactly and returns to the