naqsha-0.2.0.1: A library for working with geospatial data types.

Safe HaskellNone
LanguageHaskell2010

Naqsha.Geometry.Internal

Description

The internal module that exposes the basic geometric types in naqsha. This interface is subject to change and hence use with caution.

Synopsis

Documentation

newtype Angle Source #

An abstract angle. Internally, angles are represented as a 64-bit integer with each unit contribute 1/2^64 fraction of a complete circle. This means that angles are accurate up to a resolution of 2 π / 2^64 radians. Angles form a group under the angular addition and the fact that these are represented as integers means one can expect high speed accurate angle arithmetic.

When expressing angles one can use a more convenient notation:

myAngle   = degree 21.71167
yourAngle = degree 21 <> minute 42 <> second 42

Constructors

Angle 

Fields

Instances

Bounded Angle Source # 
Enum Angle Source # 
Eq Angle Source # 

Methods

(==) :: Angle -> Angle -> Bool #

(/=) :: Angle -> Angle -> Bool #

Ord Angle Source # 

Methods

compare :: Angle -> Angle -> Ordering #

(<) :: Angle -> Angle -> Bool #

(<=) :: Angle -> Angle -> Bool #

(>) :: Angle -> Angle -> Bool #

(>=) :: Angle -> Angle -> Bool #

max :: Angle -> Angle -> Angle #

min :: Angle -> Angle -> Angle #

Read Angle Source # 
Show Angle Source # 

Methods

showsPrec :: Int -> Angle -> ShowS #

show :: Angle -> String #

showList :: [Angle] -> ShowS #

Monoid Angle Source # 

Methods

mempty :: Angle #

mappend :: Angle -> Angle -> Angle #

mconcat :: [Angle] -> Angle #

Bits Angle Source # 
Group Angle Source # 

Methods

invert :: Angle -> Angle #

pow :: Integral x => Angle -> x -> Angle #

Unbox Angle Source # 
Angular Angle Source # 

Methods

toAngle :: Angle -> Angle Source #

Vector Vector Angle Source # 
MVector MVector Angle Source # 
data Vector Angle Source # 
data MVector s Angle Source # 

degree :: Rational -> Angle Source #

Express angle in degrees.

minute :: Rational -> Angle Source #

Express angle in minutes.

second :: Rational -> Angle Source #

Express angle in seconds.

radian :: Double -> Angle Source #

Express angle in radians

toDegree :: Fractional r => Angle -> r Source #

Measure angle in degrees. This conversion may lead to loss of precision.

toRadian :: Angle -> Double Source #

Measure angle in radians. This conversion may lead to loss of precision.

newtype Latitude Source #

The latitude of a point. Positive denotes North of Equator where as negative South.

Constructors

Latitude 

Fields

Instances

Bounded Latitude Source # 
Eq Latitude Source # 
Ord Latitude Source # 
Read Latitude Source # 
Show Latitude Source # 
Bits Latitude Source # 
Angular Latitude Source # 
Vector Vector Latitude Source # 
MVector MVector Latitude Source # 
data Vector Latitude Source # 
data MVector s Latitude Source # 

newtype Longitude Source #

The longitude of a point. Positive denotes East of the Greenwich meridian where as negative denotes West.

Constructors

Longitude 

Fields

Instances

Bounded Longitude Source # 
Eq Longitude Source # 
Ord Longitude Source # 
Read Longitude Source # 
Show Longitude Source # 
Monoid Longitude Source # 
Bits Longitude Source # 
Group Longitude Source # 
Angular Longitude Source # 
Vector Vector Longitude Source # 
MVector MVector Longitude Source # 
data Vector Longitude Source # 
data MVector s Longitude Source # 

lat :: Angle -> Latitude Source #

Construct latitude out of an angle.

lon :: Angle -> Longitude Source #

Convert angles to longitude.