orbitFrame

function orbitFrame
camera.ts:196
orbitFrame(up: Vec3) → { east: Vec3; south: Vec3; up: Vec3 }

The frame the orbit is measured in, about up: the planetarium's own axes, with the local up standing in for the world's +Y.

east is the world's +Y turned about the up direction, which is the one reference the scene carries everywhere; where up is +Y — deep space, or a body's pole — any perpendicular is as good as any other and +X stands in. The frame is a function of up alone, so a camera that has stopped moving stays still while the ship underneath it does anything at all.

The third axis is east × up, which on a body is south, and the name is kept honest rather than flipped: the azimuth swings from east toward it because that is the sense the planetarium's swings in — observerOffset runs from +X toward +Z about +Y, and +X × +Y is +Z. A drag's sign is a fact about the gesture, settled once in applyDrag, so the two cameras have to turn the same way under the same hand; the geographic basis (east, north, up) is right-handed the other way about the pole, and an orbit measured in it moves the hull's near side against the pointer while the planetarium moves a globe's with it.

upVec3
Undocumented
Returns{ east: Vec3; south: Vec3; up: Vec3 }