Each articular afferent fires a bell-shaped ("tuning") curve of impulses over the joint's range of motion, peaked at its own preferred angle:
r_i(θ) = R_max · exp( −(θ − θ_pref,i)² / (2σ²) ) + noise
θ = true joint angle
θ_pref,i = preferred angle of receptor i
σ = tuning width (broad, overlapping curves)
noise = trial-to-trial firing variability (Gaussian, σ_n)
The top panel plots every receptor's tuning curve directly in angle space, with a moving marker at the joint's current true angle. The bottom panel is a polar population-vector diagram: each receptor contributes a vector pointing along its own preferred angle, scaled by its instantaneous firing rate; the vector sum (blue) is the decoded estimate — the same read-out geometry the nervous system performs internally, made visible as an actual 2D vector construction rather than a 3D scene:
θ_est = atan2( Σ r_i · sin(θ_pref,i), Σ r_i · cos(θ_pref,i) )
- Flexion slider — sets the true knee angle; both panels update from the same tuning-curve math.
- Afferent noise — adds trial-to-trial variability to each firing rate, degrading the population estimate — modeling reduced position sense from neuropathy, fatigue, or aging.
- Active receptors — thins the population (e.g. capsule injury, joint replacement severing afferents), showing how fewer tuned units widen the estimation error and shorten the summed vector.
- Auto-flex — sweeps the joint continuously so you can watch every tuning curve's read-out point ripple and the vector-sum needle track the true angle in real time.
This broad-tuning-plus-population-vector model is the standard account of how joint position sense survives the fact that any one mechanoreceptor's signal alone is a poor, ambiguous estimate of limb angle.