min is a small POSITIVE number rather than 0 because initializeFromCamera
treats a non-positive floor as "use 0.001".
How wide the real clamp is, measured — because it is much wider than it
sounds and it is easy to blame it for an inert camera it had nothing to do
with. After auto-framing, camera-framing.ts:256 sets
[D / ZOOM_IN_FACTOR, D * ZOOM_OUT_FACTOR] = [D / 1000, D × 10000] around
the framing distance D (before auto-framing, deriveScaleLimits uses
config.controls.scaleMultipliers off the scene diagonal). On the
test_lines fixture that is minDistance = 0.0138, maxDistance = 137990
for D = 13.799. So a test only needs this at all if it wants the camera
inside D/1000 or beyond 10000·D — two-plus decades out from anything a
"look at it from close up" or "back right off" placement asks for. Reach for
it deliberately, not as a reflex: the trap that actually makes placements
inert is the missing reinitialize() (placeCameraAt), not this.
Effectively-no-clamp orbit distance limits for withOrbitDistanceLimits.
minis a small POSITIVE number rather than 0 becauseinitializeFromCameratreats a non-positive floor as "use 0.001".How wide the real clamp is, measured — because it is much wider than it sounds and it is easy to blame it for an inert camera it had nothing to do with. After auto-framing,
camera-framing.ts:256sets[D / ZOOM_IN_FACTOR, D * ZOOM_OUT_FACTOR]=[D / 1000, D × 10000]around the framing distanceD(before auto-framing,deriveScaleLimitsusesconfig.controls.scaleMultipliersoff the scene diagonal). On thetest_linesfixture that isminDistance = 0.0138,maxDistance = 137990forD = 13.799. So a test only needs this at all if it wants the camera insideD/1000or beyond10000·D— two-plus decades out from anything a "look at it from close up" or "back right off" placement asks for. Reach for it deliberately, not as a reflex: the trap that actually makes placements inert is the missingreinitialize()(placeCameraAt), not this.