Top panel: a genuine 2D field, not a flattened 3D render. The sky dome is projected with an azimuthal-equidistant map centered on the zenith -- exactly how real polarization-vision papers plot e-vector data. Radius from center encodes colatitude θ = 90°−elevation (zenith at the center, horizon at the rim); angle around the disc is compass azimuth.
Degree of polarization (Rayleigh single-scattering):
p(γ) = p_max · sin²(γ) / (1 + cos²(γ))
γ = angle between sun direction S and view direction V
E-vector (3D, tangent to sky sphere): e = normalize(S × V)
Projected onto the map's local radial/tangential axes:
a = e·ē_θ (radial component) b = e·ē_φ (tangential component)
2D tick direction = a·r̂ + b·φ̂ (r̂,φ̂ = disc's own polar unit vectors)
Bottom panel: a true top-down arena. A rolling dung ball only ever moves in the horizontal plane, so its position and bearing are already 2D quantities -- no projection needed here, just the beetle's own equation of motion.
Dung beetles have a dedicated strip of polarization-sensitive ommatidia in the dorsal rim area of each eye. Before rolling a ball away from a competitive pile, a beetle performs a brief spinning "orientation dance," sampling the sky pattern to pick an arbitrary straight-line bearing. It then holds that bearing by continuously comparing the live sky pattern to its stored reference -- a constant-bearing strategy called menotaxis. If knocked off course, it re-dances and re-locks onto the same bearing.
- Sun elevation -- changes γ at the zenith, so it changes how strongly polarized the center of the map is (strongest when the sun is low).
- Cloud cover -- scales p_max down directly, hiding the pattern the way real overcast skies do.
- New bearing -- triggers a fresh dance and a new random target heading.
- Disturb -- randomly kicks the current heading, then the beetle re-dances and steers back; heading noise scales as 1 / (DoP + ε), so a hazy sky yields a wobblier, slower recovery and a curved path.