Geodetic-0.1: Data/Geo/GreatCircle.hs
module Data.Geo.GreatCircle(
sphericalLaw
) where
import Data.Geo.Sphere
import Data.Geo.Coord
import Data.Geo.Radians
import Data.Geo.Accessor.Lat
import Data.Geo.Accessor.Lon
import Data.Geo.Accessor.Value
sphericalLaw :: Sphere -> Coord -> Coord -> Double
sphericalLaw s start end = let lat1 = toRadians (lat start)
lat2 = toRadians (lat end)
lon1 = toRadians (lon start)
lon2 = toRadians (lon end)
in acos (sin lat1 * sin lat2 + cos lat1 * cos lat2 * cos (lon2 - lon1)) * value s