-- | 
-- Module:      Data.Geo.Jord.Models 
-- Copyright:   (c) 2020 Cedric Liegeois 
-- License:     BSD3 
-- Maintainer:  Cedric Liegeois <ofmooseandmen@yahoo.fr> 
-- Stability:   experimental 
-- Portability: portable 
--
-- Common ellipsoidal and spherical models.
--
-- This module has been generated.
module Data.Geo.Jord.Models where

import Data.Geo.Jord.Ellipsoids
import Data.Geo.Jord.Ellipsoid
import Data.Geo.Jord.Model

-- | World Geodetic System 1984.
data WGS84 = 
    WGS84

instance Model WGS84 where
    modelId :: WGS84 -> ModelId
modelId WGS84
_ = String -> ModelId
ModelId String
"WGS84"
    surface :: WGS84 -> Ellipsoid
surface WGS84
_ = Ellipsoid
eWGS84
    longitudeRange :: WGS84 -> LongitudeRange
longitudeRange WGS84
_ = LongitudeRange
L180

instance Eq WGS84 where
    WGS84
_ == :: WGS84 -> WGS84 -> Bool
== WGS84
_ = Bool
True

instance Show WGS84 where
    show :: WGS84 -> String
show WGS84
m = ModelId -> String
forall a. Show a => a -> String
show (WGS84 -> ModelId
forall a. Model a => a -> ModelId
modelId WGS84
m)

instance Ellipsoidal WGS84

-- | Geodetic Reference System 1980.
data GRS80 = 
    GRS80

instance Model GRS80 where
    modelId :: GRS80 -> ModelId
modelId GRS80
_ = String -> ModelId
ModelId String
"GRS80"
    surface :: GRS80 -> Ellipsoid
surface GRS80
_ = Ellipsoid
eGRS80
    longitudeRange :: GRS80 -> LongitudeRange
longitudeRange GRS80
_ = LongitudeRange
L180

instance Eq GRS80 where
    GRS80
_ == :: GRS80 -> GRS80 -> Bool
== GRS80
_ = Bool
True

instance Show GRS80 where
    show :: GRS80 -> String
show GRS80
m = ModelId -> String
forall a. Show a => a -> String
show (GRS80 -> ModelId
forall a. Model a => a -> ModelId
modelId GRS80
m)

instance Ellipsoidal GRS80

-- | World Geodetic System 1972.
data WGS72 = 
    WGS72

instance Model WGS72 where
    modelId :: WGS72 -> ModelId
modelId WGS72
_ = String -> ModelId
ModelId String
"WGS72"
    surface :: WGS72 -> Ellipsoid
surface WGS72
_ = Ellipsoid
eWGS72
    longitudeRange :: WGS72 -> LongitudeRange
longitudeRange WGS72
_ = LongitudeRange
L180

instance Eq WGS72 where
    WGS72
_ == :: WGS72 -> WGS72 -> Bool
== WGS72
_ = Bool
True

instance Show WGS72 where
    show :: WGS72 -> String
show WGS72
m = ModelId -> String
forall a. Show a => a -> String
show (WGS72 -> ModelId
forall a. Model a => a -> ModelId
modelId WGS72
m)

instance Ellipsoidal WGS72

-- | European Terrestrial Reference System 1989.
data ETRS89 = 
    ETRS89

instance Model ETRS89 where
    modelId :: ETRS89 -> ModelId
modelId ETRS89
_ = String -> ModelId
ModelId String
"ETRS89"
    surface :: ETRS89 -> Ellipsoid
surface ETRS89
_ = Ellipsoid
eGRS80
    longitudeRange :: ETRS89 -> LongitudeRange
longitudeRange ETRS89
_ = LongitudeRange
L180

instance Eq ETRS89 where
    ETRS89
_ == :: ETRS89 -> ETRS89 -> Bool
== ETRS89
_ = Bool
True

instance Show ETRS89 where
    show :: ETRS89 -> String
show ETRS89
m = ModelId -> String
forall a. Show a => a -> String
show (ETRS89 -> ModelId
forall a. Model a => a -> ModelId
modelId ETRS89
m)

instance Ellipsoidal ETRS89

-- | North American Datum of 1983.
data NAD83 = 
    NAD83

instance Model NAD83 where
    modelId :: NAD83 -> ModelId
modelId NAD83
_ = String -> ModelId
ModelId String
"NAD83"
    surface :: NAD83 -> Ellipsoid
surface NAD83
_ = Ellipsoid
eGRS80
    longitudeRange :: NAD83 -> LongitudeRange
longitudeRange NAD83
_ = LongitudeRange
L180

instance Eq NAD83 where
    NAD83
_ == :: NAD83 -> NAD83 -> Bool
== NAD83
_ = Bool
True

instance Show NAD83 where
    show :: NAD83 -> String
show NAD83
m = ModelId -> String
forall a. Show a => a -> String
show (NAD83 -> ModelId
forall a. Model a => a -> ModelId
modelId NAD83
m)

instance Ellipsoidal NAD83

-- | European Datum 1950.
data ED50 = 
    ED50

instance Model ED50 where
    modelId :: ED50 -> ModelId
modelId ED50
_ = String -> ModelId
ModelId String
"ED50"
    surface :: ED50 -> Ellipsoid
surface ED50
_ = Ellipsoid
eIntl1924
    longitudeRange :: ED50 -> LongitudeRange
longitudeRange ED50
_ = LongitudeRange
L180

instance Eq ED50 where
    ED50
_ == :: ED50 -> ED50 -> Bool
== ED50
_ = Bool
True

instance Show ED50 where
    show :: ED50 -> String
show ED50
m = ModelId -> String
forall a. Show a => a -> String
show (ED50 -> ModelId
forall a. Model a => a -> ModelId
modelId ED50
m)

instance Ellipsoidal ED50

-- | Irland.
data Irl1975 = 
    Irl1975

instance Model Irl1975 where
    modelId :: Irl1975 -> ModelId
modelId Irl1975
_ = String -> ModelId
ModelId String
"Irl1975"
    surface :: Irl1975 -> Ellipsoid
surface Irl1975
_ = Ellipsoid
eAiryModified
    longitudeRange :: Irl1975 -> LongitudeRange
longitudeRange Irl1975
_ = LongitudeRange
L180

instance Eq Irl1975 where
    Irl1975
_ == :: Irl1975 -> Irl1975 -> Bool
== Irl1975
_ = Bool
True

instance Show Irl1975 where
    show :: Irl1975 -> String
show Irl1975
m = ModelId -> String
forall a. Show a => a -> String
show (Irl1975 -> ModelId
forall a. Model a => a -> ModelId
modelId Irl1975
m)

instance Ellipsoidal Irl1975

-- | North American Datum of 1927.
data NAD27 = 
    NAD27

instance Model NAD27 where
    modelId :: NAD27 -> ModelId
modelId NAD27
_ = String -> ModelId
ModelId String
"NAD27"
    surface :: NAD27 -> Ellipsoid
surface NAD27
_ = Ellipsoid
eClarke1866
    longitudeRange :: NAD27 -> LongitudeRange
longitudeRange NAD27
_ = LongitudeRange
L180

instance Eq NAD27 where
    NAD27
_ == :: NAD27 -> NAD27 -> Bool
== NAD27
_ = Bool
True

instance Show NAD27 where
    show :: NAD27 -> String
show NAD27
m = ModelId -> String
forall a. Show a => a -> String
show (NAD27 -> ModelId
forall a. Model a => a -> ModelId
modelId NAD27
m)

instance Ellipsoidal NAD27

-- | NTF (Paris) / France I.
data NTF = 
    NTF

instance Model NTF where
    modelId :: NTF -> ModelId
modelId NTF
_ = String -> ModelId
ModelId String
"NTF"
    surface :: NTF -> Ellipsoid
surface NTF
_ = Ellipsoid
eClarke1880IGN
    longitudeRange :: NTF -> LongitudeRange
longitudeRange NTF
_ = LongitudeRange
L180

instance Eq NTF where
    NTF
_ == :: NTF -> NTF -> Bool
== NTF
_ = Bool
True

instance Show NTF where
    show :: NTF -> String
show NTF
m = ModelId -> String
forall a. Show a => a -> String
show (NTF -> ModelId
forall a. Model a => a -> ModelId
modelId NTF
m)

instance Ellipsoidal NTF

-- | Ordnance Survey Great Britain 1936.
data OSGB36 = 
    OSGB36

instance Model OSGB36 where
    modelId :: OSGB36 -> ModelId
modelId OSGB36
_ = String -> ModelId
ModelId String
"OSGB36"
    surface :: OSGB36 -> Ellipsoid
surface OSGB36
_ = Ellipsoid
eAiry1830
    longitudeRange :: OSGB36 -> LongitudeRange
longitudeRange OSGB36
_ = LongitudeRange
L180

instance Eq OSGB36 where
    OSGB36
_ == :: OSGB36 -> OSGB36 -> Bool
== OSGB36
_ = Bool
True

instance Show OSGB36 where
    show :: OSGB36 -> String
show OSGB36
m = ModelId -> String
forall a. Show a => a -> String
show (OSGB36 -> ModelId
forall a. Model a => a -> ModelId
modelId OSGB36
m)

instance Ellipsoidal OSGB36

-- | Geodetic Datum for Germany.
data Potsdam = 
    Potsdam

instance Model Potsdam where
    modelId :: Potsdam -> ModelId
modelId Potsdam
_ = String -> ModelId
ModelId String
"Potsdam"
    surface :: Potsdam -> Ellipsoid
surface Potsdam
_ = Ellipsoid
eBessel1841
    longitudeRange :: Potsdam -> LongitudeRange
longitudeRange Potsdam
_ = LongitudeRange
L180

instance Eq Potsdam where
    Potsdam
_ == :: Potsdam -> Potsdam -> Bool
== Potsdam
_ = Bool
True

instance Show Potsdam where
    show :: Potsdam -> String
show Potsdam
m = ModelId -> String
forall a. Show a => a -> String
show (Potsdam -> ModelId
forall a. Model a => a -> ModelId
modelId Potsdam
m)

instance Ellipsoidal Potsdam

-- | Tokyo Japan.
data TokyoJapan = 
    TokyoJapan

instance Model TokyoJapan where
    modelId :: TokyoJapan -> ModelId
modelId TokyoJapan
_ = String -> ModelId
ModelId String
"TokyoJapan"
    surface :: TokyoJapan -> Ellipsoid
surface TokyoJapan
_ = Ellipsoid
eBessel1841
    longitudeRange :: TokyoJapan -> LongitudeRange
longitudeRange TokyoJapan
_ = LongitudeRange
L180

instance Eq TokyoJapan where
    TokyoJapan
_ == :: TokyoJapan -> TokyoJapan -> Bool
== TokyoJapan
_ = Bool
True

instance Show TokyoJapan where
    show :: TokyoJapan -> String
show TokyoJapan
m = ModelId -> String
forall a. Show a => a -> String
show (TokyoJapan -> ModelId
forall a. Model a => a -> ModelId
modelId TokyoJapan
m)

instance Ellipsoidal TokyoJapan

-- | Mars Orbiter Laser Altimeter.
data Mars2000 = 
    Mars2000

instance Model Mars2000 where
    modelId :: Mars2000 -> ModelId
modelId Mars2000
_ = String -> ModelId
ModelId String
"Mars2000"
    surface :: Mars2000 -> Ellipsoid
surface Mars2000
_ = Ellipsoid
eMars2000
    longitudeRange :: Mars2000 -> LongitudeRange
longitudeRange Mars2000
_ = LongitudeRange
L360

instance Eq Mars2000 where
    Mars2000
_ == :: Mars2000 -> Mars2000 -> Bool
== Mars2000
_ = Bool
True

instance Show Mars2000 where
    show :: Mars2000 -> String
show Mars2000
m = ModelId -> String
forall a. Show a => a -> String
show (Mars2000 -> ModelId
forall a. Model a => a -> ModelId
modelId Mars2000
m)

instance Ellipsoidal Mars2000

-- | International Terrestrial Reference System (2014).
data ITRF2014 = 
    ITRF2014

instance Model ITRF2014 where
    modelId :: ITRF2014 -> ModelId
modelId ITRF2014
_ = String -> ModelId
ModelId String
"ITRF2014"
    surface :: ITRF2014 -> Ellipsoid
surface ITRF2014
_ = Ellipsoid
eGRS80
    longitudeRange :: ITRF2014 -> LongitudeRange
longitudeRange ITRF2014
_ = LongitudeRange
L180

instance Eq ITRF2014 where
    ITRF2014
_ == :: ITRF2014 -> ITRF2014 -> Bool
== ITRF2014
_ = Bool
True

instance Show ITRF2014 where
    show :: ITRF2014 -> String
show ITRF2014
m = ModelId -> String
forall a. Show a => a -> String
show (ITRF2014 -> ModelId
forall a. Model a => a -> ModelId
modelId ITRF2014
m)

instance Ellipsoidal ITRF2014

instance EllipsoidalT0 ITRF2014 where
    epoch :: ITRF2014 -> Epoch
epoch ITRF2014
_ = Double -> Epoch
Epoch Double
2010.0

-- | International Terrestrial Reference System (2008).
data ITRF2008 = 
    ITRF2008

instance Model ITRF2008 where
    modelId :: ITRF2008 -> ModelId
modelId ITRF2008
_ = String -> ModelId
ModelId String
"ITRF2008"
    surface :: ITRF2008 -> Ellipsoid
surface ITRF2008
_ = Ellipsoid
eGRS80
    longitudeRange :: ITRF2008 -> LongitudeRange
longitudeRange ITRF2008
_ = LongitudeRange
L180

instance Eq ITRF2008 where
    ITRF2008
_ == :: ITRF2008 -> ITRF2008 -> Bool
== ITRF2008
_ = Bool
True

instance Show ITRF2008 where
    show :: ITRF2008 -> String
show ITRF2008
m = ModelId -> String
forall a. Show a => a -> String
show (ITRF2008 -> ModelId
forall a. Model a => a -> ModelId
modelId ITRF2008
m)

instance Ellipsoidal ITRF2008

instance EllipsoidalT0 ITRF2008 where
    epoch :: ITRF2008 -> Epoch
epoch ITRF2008
_ = Double -> Epoch
Epoch Double
2005.0

-- | International Terrestrial Reference System (2005).
data ITRF2005 = 
    ITRF2005

instance Model ITRF2005 where
    modelId :: ITRF2005 -> ModelId
modelId ITRF2005
_ = String -> ModelId
ModelId String
"ITRF2005"
    surface :: ITRF2005 -> Ellipsoid
surface ITRF2005
_ = Ellipsoid
eGRS80
    longitudeRange :: ITRF2005 -> LongitudeRange
longitudeRange ITRF2005
_ = LongitudeRange
L180

instance Eq ITRF2005 where
    ITRF2005
_ == :: ITRF2005 -> ITRF2005 -> Bool
== ITRF2005
_ = Bool
True

instance Show ITRF2005 where
    show :: ITRF2005 -> String
show ITRF2005
m = ModelId -> String
forall a. Show a => a -> String
show (ITRF2005 -> ModelId
forall a. Model a => a -> ModelId
modelId ITRF2005
m)

instance Ellipsoidal ITRF2005

instance EllipsoidalT0 ITRF2005 where
    epoch :: ITRF2005 -> Epoch
epoch ITRF2005
_ = Double -> Epoch
Epoch Double
2000.0

-- | International Terrestrial Reference System (2000).
data ITRF2000 = 
    ITRF2000

instance Model ITRF2000 where
    modelId :: ITRF2000 -> ModelId
modelId ITRF2000
_ = String -> ModelId
ModelId String
"ITRF2000"
    surface :: ITRF2000 -> Ellipsoid
surface ITRF2000
_ = Ellipsoid
eGRS80
    longitudeRange :: ITRF2000 -> LongitudeRange
longitudeRange ITRF2000
_ = LongitudeRange
L180

instance Eq ITRF2000 where
    ITRF2000
_ == :: ITRF2000 -> ITRF2000 -> Bool
== ITRF2000
_ = Bool
True

instance Show ITRF2000 where
    show :: ITRF2000 -> String
show ITRF2000
m = ModelId -> String
forall a. Show a => a -> String
show (ITRF2000 -> ModelId
forall a. Model a => a -> ModelId
modelId ITRF2000
m)

instance Ellipsoidal ITRF2000

instance EllipsoidalT0 ITRF2000 where
    epoch :: ITRF2000 -> Epoch
epoch ITRF2000
_ = Double -> Epoch
Epoch Double
1997.0

-- | International Terrestrial Reference System (93).
data ITRF93 = 
    ITRF93

instance Model ITRF93 where
    modelId :: ITRF93 -> ModelId
modelId ITRF93
_ = String -> ModelId
ModelId String
"ITRF93"
    surface :: ITRF93 -> Ellipsoid
surface ITRF93
_ = Ellipsoid
eGRS80
    longitudeRange :: ITRF93 -> LongitudeRange
longitudeRange ITRF93
_ = LongitudeRange
L180

instance Eq ITRF93 where
    ITRF93
_ == :: ITRF93 -> ITRF93 -> Bool
== ITRF93
_ = Bool
True

instance Show ITRF93 where
    show :: ITRF93 -> String
show ITRF93
m = ModelId -> String
forall a. Show a => a -> String
show (ITRF93 -> ModelId
forall a. Model a => a -> ModelId
modelId ITRF93
m)

instance Ellipsoidal ITRF93

instance EllipsoidalT0 ITRF93 where
    epoch :: ITRF93 -> Epoch
epoch ITRF93
_ = Double -> Epoch
Epoch Double
1988.0

-- | International Terrestrial Reference System (91).
data ITRF91 = 
    ITRF91

instance Model ITRF91 where
    modelId :: ITRF91 -> ModelId
modelId ITRF91
_ = String -> ModelId
ModelId String
"ITRF91"
    surface :: ITRF91 -> Ellipsoid
surface ITRF91
_ = Ellipsoid
eGRS80
    longitudeRange :: ITRF91 -> LongitudeRange
longitudeRange ITRF91
_ = LongitudeRange
L180

instance Eq ITRF91 where
    ITRF91
_ == :: ITRF91 -> ITRF91 -> Bool
== ITRF91
_ = Bool
True

instance Show ITRF91 where
    show :: ITRF91 -> String
show ITRF91
m = ModelId -> String
forall a. Show a => a -> String
show (ITRF91 -> ModelId
forall a. Model a => a -> ModelId
modelId ITRF91
m)

instance Ellipsoidal ITRF91

instance EllipsoidalT0 ITRF91 where
    epoch :: ITRF91 -> Epoch
epoch ITRF91
_ = Double -> Epoch
Epoch Double
1988.0

-- | World Geodetic System 1984 (G1762).
data WGS84_G1762 = 
    WGS84_G1762

instance Model WGS84_G1762 where
    modelId :: WGS84_G1762 -> ModelId
modelId WGS84_G1762
_ = String -> ModelId
ModelId String
"WGS84_G1762"
    surface :: WGS84_G1762 -> Ellipsoid
surface WGS84_G1762
_ = Ellipsoid
eWGS84
    longitudeRange :: WGS84_G1762 -> LongitudeRange
longitudeRange WGS84_G1762
_ = LongitudeRange
L180

instance Eq WGS84_G1762 where
    WGS84_G1762
_ == :: WGS84_G1762 -> WGS84_G1762 -> Bool
== WGS84_G1762
_ = Bool
True

instance Show WGS84_G1762 where
    show :: WGS84_G1762 -> String
show WGS84_G1762
m = ModelId -> String
forall a. Show a => a -> String
show (WGS84_G1762 -> ModelId
forall a. Model a => a -> ModelId
modelId WGS84_G1762
m)

instance Ellipsoidal WGS84_G1762

instance EllipsoidalT0 WGS84_G1762 where
    epoch :: WGS84_G1762 -> Epoch
epoch WGS84_G1762
_ = Double -> Epoch
Epoch Double
2005.0

-- | World Geodetic System 1984 (G1674).
data WGS84_G1674 = 
    WGS84_G1674

instance Model WGS84_G1674 where
    modelId :: WGS84_G1674 -> ModelId
modelId WGS84_G1674
_ = String -> ModelId
ModelId String
"WGS84_G1674"
    surface :: WGS84_G1674 -> Ellipsoid
surface WGS84_G1674
_ = Ellipsoid
eWGS84
    longitudeRange :: WGS84_G1674 -> LongitudeRange
longitudeRange WGS84_G1674
_ = LongitudeRange
L180

instance Eq WGS84_G1674 where
    WGS84_G1674
_ == :: WGS84_G1674 -> WGS84_G1674 -> Bool
== WGS84_G1674
_ = Bool
True

instance Show WGS84_G1674 where
    show :: WGS84_G1674 -> String
show WGS84_G1674
m = ModelId -> String
forall a. Show a => a -> String
show (WGS84_G1674 -> ModelId
forall a. Model a => a -> ModelId
modelId WGS84_G1674
m)

instance Ellipsoidal WGS84_G1674

instance EllipsoidalT0 WGS84_G1674 where
    epoch :: WGS84_G1674 -> Epoch
epoch WGS84_G1674
_ = Double -> Epoch
Epoch Double
2005.0

-- | World Geodetic System 1984 (G1150).
data WGS84_G1150 = 
    WGS84_G1150

instance Model WGS84_G1150 where
    modelId :: WGS84_G1150 -> ModelId
modelId WGS84_G1150
_ = String -> ModelId
ModelId String
"WGS84_G1150"
    surface :: WGS84_G1150 -> Ellipsoid
surface WGS84_G1150
_ = Ellipsoid
eWGS84
    longitudeRange :: WGS84_G1150 -> LongitudeRange
longitudeRange WGS84_G1150
_ = LongitudeRange
L180

instance Eq WGS84_G1150 where
    WGS84_G1150
_ == :: WGS84_G1150 -> WGS84_G1150 -> Bool
== WGS84_G1150
_ = Bool
True

instance Show WGS84_G1150 where
    show :: WGS84_G1150 -> String
show WGS84_G1150
m = ModelId -> String
forall a. Show a => a -> String
show (WGS84_G1150 -> ModelId
forall a. Model a => a -> ModelId
modelId WGS84_G1150
m)

instance Ellipsoidal WGS84_G1150

instance EllipsoidalT0 WGS84_G1150 where
    epoch :: WGS84_G1150 -> Epoch
epoch WGS84_G1150
_ = Double -> Epoch
Epoch Double
2001.0

-- | European Terrestrial Reference System (2000).
data ETRF2000 = 
    ETRF2000

instance Model ETRF2000 where
    modelId :: ETRF2000 -> ModelId
modelId ETRF2000
_ = String -> ModelId
ModelId String
"ETRF2000"
    surface :: ETRF2000 -> Ellipsoid
surface ETRF2000
_ = Ellipsoid
eGRS80
    longitudeRange :: ETRF2000 -> LongitudeRange
longitudeRange ETRF2000
_ = LongitudeRange
L180

instance Eq ETRF2000 where
    ETRF2000
_ == :: ETRF2000 -> ETRF2000 -> Bool
== ETRF2000
_ = Bool
True

instance Show ETRF2000 where
    show :: ETRF2000 -> String
show ETRF2000
m = ModelId -> String
forall a. Show a => a -> String
show (ETRF2000 -> ModelId
forall a. Model a => a -> ModelId
modelId ETRF2000
m)

instance Ellipsoidal ETRF2000

instance EllipsoidalT0 ETRF2000 where
    epoch :: ETRF2000 -> Epoch
epoch ETRF2000
_ = Double -> Epoch
Epoch Double
2005.0

-- | NAD83 (Continuously Operating Reference Station 1996).
data NAD83_CORS96 = 
    NAD83_CORS96

instance Model NAD83_CORS96 where
    modelId :: NAD83_CORS96 -> ModelId
modelId NAD83_CORS96
_ = String -> ModelId
ModelId String
"NAD83_CORS96"
    surface :: NAD83_CORS96 -> Ellipsoid
surface NAD83_CORS96
_ = Ellipsoid
eGRS80
    longitudeRange :: NAD83_CORS96 -> LongitudeRange
longitudeRange NAD83_CORS96
_ = LongitudeRange
L180

instance Eq NAD83_CORS96 where
    NAD83_CORS96
_ == :: NAD83_CORS96 -> NAD83_CORS96 -> Bool
== NAD83_CORS96
_ = Bool
True

instance Show NAD83_CORS96 where
    show :: NAD83_CORS96 -> String
show NAD83_CORS96
m = ModelId -> String
forall a. Show a => a -> String
show (NAD83_CORS96 -> ModelId
forall a. Model a => a -> ModelId
modelId NAD83_CORS96
m)

instance Ellipsoidal NAD83_CORS96

instance EllipsoidalT0 NAD83_CORS96 where
    epoch :: NAD83_CORS96 -> Epoch
epoch NAD83_CORS96
_ = Double -> Epoch
Epoch Double
1997.0

-- | Geocentric Datum Of Australia 1994.
data GDA94 = 
    GDA94

instance Model GDA94 where
    modelId :: GDA94 -> ModelId
modelId GDA94
_ = String -> ModelId
ModelId String
"GDA94"
    surface :: GDA94 -> Ellipsoid
surface GDA94
_ = Ellipsoid
eGRS80
    longitudeRange :: GDA94 -> LongitudeRange
longitudeRange GDA94
_ = LongitudeRange
L180

instance Eq GDA94 where
    GDA94
_ == :: GDA94 -> GDA94 -> Bool
== GDA94
_ = Bool
True

instance Show GDA94 where
    show :: GDA94 -> String
show GDA94
m = ModelId -> String
forall a. Show a => a -> String
show (GDA94 -> ModelId
forall a. Model a => a -> ModelId
modelId GDA94
m)

instance Ellipsoidal GDA94

instance EllipsoidalT0 GDA94 where
    epoch :: GDA94 -> Epoch
epoch GDA94
_ = Double -> Epoch
Epoch Double
1994.0

-- | Spherical Earth model derived from WGS84 ellipsoid.
data S84 = 
    S84

instance Model S84 where
    modelId :: S84 -> ModelId
modelId S84
_ = String -> ModelId
ModelId String
"S84"
    surface :: S84 -> Ellipsoid
surface S84
_ = Ellipsoid -> Ellipsoid
toSphere Ellipsoid
eWGS84
    longitudeRange :: S84 -> LongitudeRange
longitudeRange S84
_ = LongitudeRange
L180

instance Eq S84 where
    S84
_ == :: S84 -> S84 -> Bool
== S84
_ = Bool
True

instance Show S84 where
    show :: S84 -> String
show S84
m = ModelId -> String
forall a. Show a => a -> String
show (S84 -> ModelId
forall a. Model a => a -> ModelId
modelId S84
m)

instance Spherical S84

-- | Spherical Mars model derived from Mars2000 ellipsoid.
data SMars2000 = 
    SMars2000

instance Model SMars2000 where
    modelId :: SMars2000 -> ModelId
modelId SMars2000
_ = String -> ModelId
ModelId String
"SMars2000"
    surface :: SMars2000 -> Ellipsoid
surface SMars2000
_ = Ellipsoid -> Ellipsoid
toSphere Ellipsoid
eMars2000
    longitudeRange :: SMars2000 -> LongitudeRange
longitudeRange SMars2000
_ = LongitudeRange
L360

instance Eq SMars2000 where
    SMars2000
_ == :: SMars2000 -> SMars2000 -> Bool
== SMars2000
_ = Bool
True

instance Show SMars2000 where
    show :: SMars2000 -> String
show SMars2000
m = ModelId -> String
forall a. Show a => a -> String
show (SMars2000 -> ModelId
forall a. Model a => a -> ModelId
modelId SMars2000
m)

instance Spherical SMars2000

-- | Moon IAU/IAG.
data Moon = 
    Moon

instance Model Moon where
    modelId :: Moon -> ModelId
modelId Moon
_ = String -> ModelId
ModelId String
"Moon"
    surface :: Moon -> Ellipsoid
surface Moon
_ = Ellipsoid -> Ellipsoid
toSphere Ellipsoid
eMoon
    longitudeRange :: Moon -> LongitudeRange
longitudeRange Moon
_ = LongitudeRange
L180

instance Eq Moon where
    Moon
_ == :: Moon -> Moon -> Bool
== Moon
_ = Bool
True

instance Show Moon where
    show :: Moon -> String
show Moon
m = ModelId -> String
forall a. Show a => a -> String
show (Moon -> ModelId
forall a. Model a => a -> ModelId
modelId Moon
m)

instance Spherical Moon