SpringValue advances by a caller-supplied delta in substeps of at most 1 ms
instead of reading the global clock. It supports parameter sets, snapping,
launching with initial velocity and a settled test based on distance and
velocity.
SpringChannels applies the same implementation to scalars, vectors, rectangles
and colours, replacing the duplicated SpringVec and SpringRect paths.
TileableNoise builds a seeded permutation table and evaluates periodic 2D
gradient noise with quintic interpolation. Fractal noise sums weighted octaves,
increasing frequency and period together so the result tiles at every octave.
gammaToLinear and linearToGamma provide clamped gamma 2.2 conversion for
linear-light colour blending. Tests cover periodicity, bounds, seed variation,
octave tiling, reference values and round trips.