Safe Haskell | None |
---|
Haversine geodetic distance algorithm.
- haversine :: (HasCoordinate c1, HasCoordinate c2) => Sphere -> c1 -> c2 -> Double
- haversineD :: (HasCoordinate c1, HasCoordinate c2) => c1 -> c2 -> Double
- haversine' :: Optional1 Sphere (Coordinate -> Coordinate -> Double) x => x
Documentation
:: (HasCoordinate c1, HasCoordinate c2) | |
=> Sphere | reference sphere |
-> c1 | start coordinate |
-> c2 | end coordinate |
-> Double |
Haversine algorithm.
>>>
fmap (printf "%0.4f") (do fr <- 27.812 ..#.. 154.295; to <- (-66.093) ..#.. 12.84; return (haversine earthMean fr to)) :: Maybe String
Just "15000950.5589"
>>>
fmap (printf "%0.4f") (do fr <- (-16.7889) ..#.. 41.935; to <- 6.933 ..#.. (-162.55); return (haversine earthMean fr to)) :: Maybe String
Just "17128743.0669"
>>>
fmap (printf "%0.4f") (do fr <- 27.812 ..#.. 154.295; to <- (-66.093) ..#.. 12.84; return (haversine (6350000 ^. nSphere) fr to)) :: Maybe String
Just "14959840.4461"
>>>
fmap (printf "%0.4f") (do fr <- (-16.7889) ..#.. 41.935; to <- 6.933 ..#.. (-162.55); return (haversine (6350000 ^. nSphere) fr to)) :: Maybe String
Just "17081801.7377"
:: (HasCoordinate c1, HasCoordinate c2) | |
=> c1 | start coordinate |
-> c2 | end coordinate |
-> Double |
Haversine algorithm with a default sphere of the earth mean.
>>>
fmap (printf "%0.4f") (do fr <- 27.812 ..#.. 154.295; to <- (-66.093) ..#.. 12.84; return (haversineD fr to)) :: Maybe String
Just "15000950.5589"
>>>
fmap (printf "%0.4f") (do fr <- (-16.7889) ..#.. 41.935; to <- 6.933 ..#.. (-162.55); return (haversineD fr to)) :: Maybe String
Just "17128743.0669"
haversine' :: Optional1 Sphere (Coordinate -> Coordinate -> Double) x => xSource
Haversine algorithm with an optionally applied default sphere of the earth mean.
>>>
fmap (printf "%0.4f") (do fr <- 27.812 ..#.. 154.295; to <- (-66.093) ..#.. 12.84; return (haversine' fr to :: Double)) :: Maybe String
Just "15000950.5589"
>>>
fmap (printf "%0.4f") (do fr <- (-16.7889) ..#.. 41.935; to <- 6.933 ..#.. (-162.55); return (haversine' fr to :: Double)) :: Maybe String
Just "17128743.0669"