Method: PerfectShape::Math.normalize_degrees
- Defined in:
- lib/perfect_shape/math.rb
.normalize_degrees(angle) ⇒ Object
Normalizes the specified angle into the range -180 to 180.
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/perfect_shape/math.rb', line 41 def normalize_degrees(angle) angle = BigDecimal(angle.to_s) if angle > 180.0 if angle <= (180.0 + 360.0) angle = angle - BigDecimal('360.0') else angle = Math.ieee_remainder(angle, 360.0) # IEEEremainder can return -180 here for some input values... angle = BigDecimal('180.0') if angle == -180.0 end elsif angle <= -180.0 if angle > (-180.0 - 360.0) angle = angle + BigDecimal('360.0') else angle = Math.ieee_remainder(angle, 360.0) # IEEEremainder can return -180 here for some input values... angle = BigDecimal('180.0') if angle == -180.0 end end angle end |