class FakeRedis::GeoSet::Point

def deg_to_rad(deg)

def deg_to_rad(deg)
  deg * Math::PI / 180.0
end

def distance_to(other)

def distance_to(other)
  lat1 = deg_to_rad(@lat)
  lon1 = deg_to_rad(@lon)
  lat2 = deg_to_rad(other.lat)
  lon2 = deg_to_rad(other.lon)
  haversine_distance(lat1, lon1, lat2, lon2)
end

def geohash(precision = 10)

def geohash(precision = 10)
  latlon = [@lat, @lon]
  ranges = [[-90.0, 90.0], [-180.0, 180.0]]
  coordinate = 1
  (0...precision).map do
    index = 0 # index into base32 map
    5.times do |bit|
      mid = (ranges[coordinate][0] + ranges[coordinate][1]) / 2
      if latlon[coordinate] >= mid
        index = index * 2 + 1
        ranges[coordinate][0] = mid
      else
        index *= 2
        ranges[coordinate][1] = mid
      end
      coordinate ^= 1
    end
    BASE32[index]
  end.join
end

def haversine_distance(lat1, lon1, lat2, lon2)

def haversine_distance(lat1, lon1, lat2, lon2)
  h = Math.sin((lat2 - lat1) / 2) ** 2 + Math.cos(lat1) * Math.cos(lat2) *
        Math.sin((lon2 - lon1) / 2) ** 2
  2 * EARTH_RADIUS_IN_M * Math.asin(Math.sqrt(h))
end

def initialize(lon, lat, name)

def initialize(lon, lat, name)
  @lon = Float(lon)
  @lat = Float(lat)
  @name = name
end