geodetic-0.1.3: Geodetic calculations

Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Geo.Geodetic.Bearing

Description

A bearing in degrees between 0 and 360.

Synopsis

Documentation

data Bearing Source

Instances

Eq Bearing 
Ord Bearing 
Show Bearing

A show instance that prints to 4 decimal places. This is to take floating-point rounding errors into account.

AsBearing p f Bearing 

class AsBearing p f s where Source

Minimal complete definition

Nothing

Methods

_Bearing :: Optic' p f s Bearing Source

Instances

(Choice p, Applicative f) => AsBearing p f Double

A prism on bearing to a double between 0 inclusive and 360 exclusive.

>>> (7 :: Double) ^? _Bearing
Just (Bearing 7.0000)
>>> (0 :: Double) ^? _Bearing
Just (Bearing 0.0000)
>>> (359 :: Double) ^? _Bearing
Just (Bearing 359.0000)
>>> (359.997 :: Double) ^? _Bearing
Just (Bearing 359.9970)
>>> (360 :: Double) ^? _Bearing
Nothing
all (\m -> _Bearing # m == n) ((n :: Double) ^? _Bearing)
AsBearing p f Bearing 
((~) (* -> * -> *) p (->), Functor f) => AsBearing p f VincentyDirectResult 

modBearing :: Double -> Bearing Source

Construct a bearing such that if the given value is out of bounds, a modulus is taken to keep it within 0 inclusive and 360 exclusive.

>>> modBearing 7
Bearing 7.0000
>>> modBearing 0
Bearing 0.0000
>>> modBearing (-0.0001)
Bearing 359.9999
>>> modBearing 360
Bearing 0.0000
>>> modBearing 359.99999
Bearing 360.0000
>>> modBearing 359.999
Bearing 359.9990

radianBearing :: Prism' Double Bearing Source

A prism on bearing to a double between 0 and π exclusive.

>>> (2 * pi - 0.0000000001) ^? radianBearing
Just (Bearing 360.0000)
>>> 0 ^? radianBearing
Just (Bearing 0.0000)
>>> 0.001 ^? radianBearing
Just (Bearing 0.0573)
>>> 1.78391 ^? radianBearing
Just (Bearing 102.2105)
>>> pi ^? radianBearing
Just (Bearing 180.0000)
>>> (2 * pi) ^? radianBearing
Nothing
>>> (-0.001) ^? radianBearing
Nothing