hgis-1.0.0.0: src/GIS/Math/Utils.hs
-- | Miscellaneous utils for math
module GIS.Math.Utils ( radians
, toRadians
, sinc
, avg
, shittyCentroid
) where
import Control.Composition
import GIS.Types
-- | Averages the coördinates of a polygon, returning a point.
shittyCentroid :: Polygon -> Point
shittyCentroid poly = (avg $ fmap fst poly, avg $ fmap snd poly)
-- | Average over a foldable container
avg :: (RealFrac a, Foldable t) => t a -> a
avg list = sum list / (fromIntegral . length $ list)
sinc :: Floating a => a -> a
sinc x = sin x / x
-- | Convert a `Double` from degrees to radians.
radians :: Double -> Double
radians = (*(pi/180))
-- | Convert both coördinates to radians.
toRadians :: Point -> Point
toRadians = both radians