circular_midpoint
Functioncircular_midpoint(a1: float, a2: float) -> float
Geometrically correct midpoint between two angles in degrees (0-360).
Uses vector averaging, so it handles the 0°/360° wrap-around correctly.
Example: circular_midpoint(350, 10) → 0.0, not 180.0.