The normalization formula didn't handle the 180° boundary consistently,
and produced asymmetric results for top vs. bottom rotation points.
Changes made: replaced the angle normalization with symmetric normalization,
and forced 180º to be the displayed angle across all rotation points.
This fixes two issues the previous algorithm had:
1. A half-turn rotation used to show up as -180°.
2. Rotating more than 180° in one drag event would overwhelm it
and cause the value to go outside its range.
This comes at the cost of a negligible performance hit,
since a division (modulo) is performed instead of just addition/subtraction.