Sha256: 21b640df29d02ed36c175babbbe1d5873999b0628a0bfddbf8dc2f116748d241

Contents?: true

Size: 1.44 KB

Versions: 5

Compression:

Stored size: 1.44 KB

Contents

module GeoUnits
  module Numeric
    module Normalizer
      # all degrees between -180 and 180
      def normalize_lng
        case self
        when -360, 0, 360
          0
        when -360..-180
          self % 180
        when -180..0
          -180 + (self % 180)
        when 0..180
          self
        when 180..360
          self % 180
        else
          return (self % 360).normalize_lng if self > 360
          return (360 - (self % 360)).normalize_lng if self < -360
          raise ArgumentError, "Degrees #{self} out of range"
        end
      end

      # all degrees between -90 and 90
      def normalize_lat
        case self 
        when -360, 0, 360
          0
        when -180, 180
          0
        when -360..-270
          self % 90
        when -270..-180
          90 - (self % 90)
        when -180..-90
          - (self % 90)
        when -90..0
          -90 + (self % 90)
        when 0..90
          self
        when 90..180
          self % 90
        when 180..270
          - (self % 90)
        when 270..360
          - 90 + (self % 90)
        else
          return (self % 360).normalize_lat if self > 360
          return (360 - (self % 360)).normalize_lat if self < -360
          raise ArgumentError, "Degrees #{self} out of range"
        end
      end

      def normalize_deg shift = 0
        (self + shift) % 360 
      end
      alias_method :normalize_degrees, :normalize_deg

      extend self
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
geo_units-0.3.4 lib/geo_units/numeric/normalizer.rb
geo_units-0.3.3 lib/geo_units/numeric/normalizer.rb
geo_units-0.3.2 lib/geo_units/numeric/normalizer.rb
geo_units-0.3.1.1 lib/geo_units/numeric/normalizer.rb
geo_units-0.3.1 lib/geo_units/numeric/normalizer.rb