Every physical quantity has a dimension built from the SI base quantities mass M, length L and time T, written as an exponent vector. Force, for example, is [M¹L¹T⁻²]. An equation is dimensionally homogeneous — a necessary (not sufficient) condition for it to be physically valid — only if both sides reduce to the exact same exponent vector:
[LHS] = [RHS]
D = (a, b, c) such that quantity ~ M^a L^b T^c
mismatch |ΔD| = ‖D_LHS − D_RHS‖₂
This 2D scene drops the 3D balance beam for two flat, honest instruments. The top strip plots each side's exponent vector as a point on two orthographic planes of exponent space — the M-L plane and the L-T plane — so you can literally see how far apart LHS and RHS sit. The dial below is a genuine damped rotational oscillator, mathematically identical to a torsion-spring needle:
τ = k·(W_R − W_L)·sens − c·ω − k·1.6·θ
ω̇ = τ / I, θ̇ = ω (semi-implicit Euler, dt clamped)
where W = ‖D‖ is the Euclidean norm of each side's exponent vector — a visualisation weight, not a literal mass. Drag the needle to kick it off balance by hand and watch it swing back under its own spring/damping; the strip chart beneath the dial traces θ(t) so you can see the settle in real time. The dimensional verdict (green/red) is computed independently and exactly — it flags F = m·v (force set equal to momentum) as dimensionally inconsistent even though both are everyday mechanics quantities, and confirms F = m·a is valid.
- Quantity A / B / C — pick from 14 common mechanical quantities, each with a known [M,L,T] exponent vector.
- Multiply by a second quantity — combine two RHS quantities (their exponents add), e.g. mass × acceleration.
- Spring / damping / inertia sliders — retune the needle's own dynamics: stiffer springs and lighter needles oscillate faster, more damping kills the overshoot.
- Drag the needle — grab it with the mouse or a finger to perturb it manually; release to let the oscillator take back over.
- Random equation — samples a fresh trio, sometimes landing on a valid identity, sometimes not.