The plates near a direction, and how much farther each is than the nearest.
This is a partition of unity, not a ranking, and the difference is a
kilometer of cliff. The obvious version returns the nearest plate and the
second-nearest — one pass, two minima, and F2 − F1 falls out of it for
free. What that version cannot do is be read: which plate is second changes
discontinuously along the locus where the second and third nearest are
equidistant, and that is a network of curves through every plate's interior,
nowhere near an edge. Measured either side of one on Proxima Centauri II: the
same nearest plate, base 0.432, with the second jumping from base 0.224 to
−0.894 at a boundary of 5.72e-2 — 1,532 m of step, of a 20,434 m relief
budget, and 3,081 m on Earth. It is the same shape as the cube-corner problem
craters.ts avoids: a rank-based lookup has a seam wherever the ranking
changes.
So the sample carries every plate within PLATE_MARGIN of the nearest, and
plateProperty weights them by a smooth function of how much farther they
are and normalizes. No rank identity enters, so a property read this way is
continuous by construction: a plate joins the set at the support radius with
weight zero, and two plates that swap places have equal weight at the instant
they do.
boundary is F2 − F1 in radians and survives unchanged, because the
value of the second distance is continuous even where the plate holding it
is not. plate is the nearest, and its identity is discontinuous at a
boundary in exactly the way the second's was at an interior seam — nothing
reads a property off it, and it is here to be the fallback and to be looked
at.
Members
boundaryreadonly
Zero exactly on a boundary, and half the plate's width at its center.
excessreadonly
How much farther than the nearest each of those is, radians. Parallel.
nearbyreadonly
Every plate within PLATE_MARGIN of the nearest, the nearest included.