The horizontal semicircular canals sense head angular velocity, not position. The cupula — an elastic membrane deflected by inertial lag of the endolymph fluid — behaves like a heavily damped torsion pendulum. Ignoring its ~3 ms short time constant, its transfer function relating cupula deflection Δ to head velocity Ω is a high-pass filter:
Δ(s)/Ω(s) = T1·s / (1 + T1·s), T1 ≈ 5–7 s
implemented here as: dz/dt = (Ω_head − z)/T1 (low-pass state)
Δ = Ω_head − z (cupula/canal signal)
Because T1 is long, Δ ≈ Ω_head for any head movement faster than about 1/T1 — the canal reports velocity accurately during ordinary head turns — but decays toward zero during sustained constant-velocity rotation, which is why a spinning sensation fades even though you're still turning.
The vestibular nuclei convert Δ into a three-neuron-arc command that drives the extraocular muscles at gain g:
ω_eye = −g · Δ (ideal g = 1.0 → perfect gaze stabilization)
gaze angle = θ_head + θ_eye-in-head
retinal slip = −(gaze angle) [target fixed at 0°]
- VOR gain slider — g < 1 under-compensates (vestibular hypofunction, causes oscillopsia — the world appears to jump during head movement); g > 1 over-compensates.
- VOR suppression — when you deliberately track a target that moves with your head (reading a phone while walking), smooth pursuit overrides the reflex and drives eye-in-head offset back toward zero instead of counter-rotating.
- Eye-in-head rotation is clamped to ±40°, the approximate physiological range of horizontal ocular motility before a real eye would need a saccadic reset (the fast phase of nystagmus), simplified away here to keep the slow-phase compensation visible.
Clinical relevance: the head-impulse test measures exactly this gain at the bedside — a corrective catch-up saccade after a fast head turn indicates g well below 1, a hallmark of vestibular neuritis or ototoxic canal damage.