The measured figure of a body that gravity did not round off.
radius and polarRadius describe a spheroid, which is the right shape for
everything hydrostatic equilibrium got hold of — every planet, every large
moon, Pluto and Ceres. Below roughly 400 km across, self-gravity loses to
material strength and the body keeps whatever shape the last collision left
it. Phobos is 27 × 22 × 18 km with a nine-kilometer crater in one end;
Kleopatra is a dog bone; Bennu is a spinning top. A spheroid cannot say any
of that, and drawing one is not an approximation of those bodies, it is a
picture of a different object.
Present exactly when the body is not a spheroid. Null is not "unknown", it is "round", and the renderer reads it that way.
universe/src/system.ts:289Members
intermediateRadiusreadonly
The second equatorial half-extent, meters.
radius is a and polarRadius is c; this is b. It lives here rather than
as a third top-level radius because a = b for every hydrostatic body
there is, so on a spheroid the field would be a third number restating the
first. In Sol that is 37 bodies it would be redundant on against 92 it is
load-bearing for; across the galaxy the ratio inverts, because a generated
system is mostly round worlds with a belt. Either way the field belongs
with the bodies that need it rather than on the ones that do not.
irregularityreadonly
Radial roughness as a fraction of the mean radius, for the generated figure that stands in when there is no model.
The measured half-extents are a fact and this is not; it is the same split
SurfaceParameters makes, where the published relief is used verbatim and
the shape below the map's resolution is drawn from the seed. A body with a
model ignores it.
modelreadonly
Key into the shape-model manifest, or null.
A key, not a path, for the same reason BodyAppearance.texture is one:
packages/universe cannot fetch anything and must not know what a URL is.
A key with no entry falls back to the generated figure below, which is why
this can name a model that has not been vendored yet.