manifolds-core-0.6.0.0: The basic classes for the manifolds hierarchy.
Copyright (c) Justus Sagemüller 2016 GPL v3 (@) jsag \$ hvl.no experimental portable None Haskell2010

Math.Manifold.Core.Types

Description

Several low-dimensional manifolds, represented in some simple way as Haskell data types. All these are in the PseudoAffine class.

Synopsis

# Documentation

data EmptyMfd v Source #

The empty space can be considered a manifold with any sort of tangent space.

#### Instances

Instances details
 Eq (EmptyMfd v) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Methods(==) :: EmptyMfd v -> EmptyMfd v -> Bool #(/=) :: EmptyMfd v -> EmptyMfd v -> Bool # Ord (EmptyMfd v) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Methodscompare :: EmptyMfd v -> EmptyMfd v -> Ordering #(<) :: EmptyMfd v -> EmptyMfd v -> Bool #(<=) :: EmptyMfd v -> EmptyMfd v -> Bool #(>) :: EmptyMfd v -> EmptyMfd v -> Bool #(>=) :: EmptyMfd v -> EmptyMfd v -> Bool #max :: EmptyMfd v -> EmptyMfd v -> EmptyMfd v #min :: EmptyMfd v -> EmptyMfd v -> EmptyMfd v # Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Methodseliminate :: EmptyMfd v -> x #

type S⁰ = S⁰_ Double Source #

The zero-dimensional sphere is actually just two points. Implementation might therefore change to ℝ⁰ + ℝ⁰: the disjoint sum of two single-point spaces.

data S⁰_ r Source #

Constructors

 PositiveHalfSphere NegativeHalfSphere

#### Instances

Instances details
 Eq (S⁰_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Methods(==) :: S⁰_ r -> S⁰_ r -> Bool #(/=) :: S⁰_ r -> S⁰_ r -> Bool # Show (S⁰_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal MethodsshowsPrec :: Int -> S⁰_ r -> ShowS #show :: S⁰_ r -> String #showList :: [S⁰_ r] -> ShowS # Generic (S⁰_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Associated Typestype Rep (S⁰_ r) :: Type -> Type # Methodsfrom :: S⁰_ r -> Rep (S⁰_ r) x #to :: Rep (S⁰_ r) x -> S⁰_ r # type Rep (S⁰_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal type Rep (S⁰_ r) = D1 ('MetaData "S\8304_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'False) (C1 ('MetaCons "PositiveHalfSphere" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "NegativeHalfSphere" 'PrefixI 'False) (U1 :: Type -> Type))

type = S¹_ Double Source #

The unit circle.

newtype S¹_ r Source #

Constructors

 S¹Polar FieldsφParamS¹ :: rMust be in range [-π, π[.

#### Instances

Instances details
 (Eq r, RealFloat r) => Eq (S¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Methods(==) :: S¹_ r -> S¹_ r -> Bool #(/=) :: S¹_ r -> S¹_ r -> Bool # Show r => Show (S¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal MethodsshowsPrec :: Int -> S¹_ r -> ShowS #show :: S¹_ r -> String #showList :: [S¹_ r] -> ShowS # Generic (S¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Associated Typestype Rep (S¹_ r) :: Type -> Type # Methodsfrom :: S¹_ r -> Rep (S¹_ r) x #to :: Rep (S¹_ r) x -> S¹_ r # type Rep (S¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal type Rep (S¹_ r) = D1 ('MetaData "S\185_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'True) (C1 ('MetaCons "S\185Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "\966ParamS\185") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 r)))

pattern :: Double -> Source #

Deprecated: Use Math.Manifold.Core.Types.S¹Polar

type = S²_ Double Source #

The ordinary unit sphere.

data S²_ r Source #

Constructors

 S²Polar FieldsϑParamS² :: !rRange [0, π[.φParamS² :: !rRange [-π, π[.

#### Instances

Instances details
 (Eq r, RealFloat r) => Eq (S²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Methods(==) :: S²_ r -> S²_ r -> Bool #(/=) :: S²_ r -> S²_ r -> Bool # Show r => Show (S²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal MethodsshowsPrec :: Int -> S²_ r -> ShowS #show :: S²_ r -> String #showList :: [S²_ r] -> ShowS # Generic (S²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Associated Typestype Rep (S²_ r) :: Type -> Type # Methodsfrom :: S²_ r -> Rep (S²_ r) x #to :: Rep (S²_ r) x -> S²_ r # type Rep (S²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal type Rep (S²_ r) = D1 ('MetaData "S\178_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'False) (C1 ('MetaCons "S\178Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "\977ParamS\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r) :*: S1 ('MetaSel ('Just "\966ParamS\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)))

pattern :: Double -> Double -> Source #

Deprecated: Use Math.Manifold.Core.Types.S²Polar

type = D¹_ Double Source #

The “one-dimensional disk” – really just the line segment between the two points -1 and 1 of S⁰, i.e. this is simply a closed interval.

newtype D¹_ r Source #

Constructors

 D¹ FieldsxParamD¹ :: rRange [-1, 1].

#### Instances

Instances details
 Show r => Show (D¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal MethodsshowsPrec :: Int -> D¹_ r -> ShowS #show :: D¹_ r -> String #showList :: [D¹_ r] -> ShowS # Generic (D¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Associated Typestype Rep (D¹_ r) :: Type -> Type # Methodsfrom :: D¹_ r -> Rep (D¹_ r) x #to :: Rep (D¹_ r) x -> D¹_ r # type Rep (D¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal type Rep (D¹_ r) = D1 ('MetaData "D\185_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'True) (C1 ('MetaCons "D\185" 'PrefixI 'True) (S1 ('MetaSel ('Just "xParamD\185") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 r)))

type = D²_ Double Source #

The standard, closed unit disk. Homeomorphic to the cone over S¹, but not in the the obvious, “flat” way. (In is not homeomorphic, despite the almost identical ADT definition, to the projective space ℝP²!)

data D²_ r Source #

Constructors

 D²Polar FieldsrParamD² :: !rRange [0, 1].φParamD² :: !rRange [-π, π[.

#### Instances

Instances details
 Show r => Show (D²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal MethodsshowsPrec :: Int -> D²_ r -> ShowS #show :: D²_ r -> String #showList :: [D²_ r] -> ShowS # Generic (D²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Associated Typestype Rep (D²_ r) :: Type -> Type # Methodsfrom :: D²_ r -> Rep (D²_ r) x #to :: Rep (D²_ r) x -> D²_ r # type Rep (D²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal type Rep (D²_ r) = D1 ('MetaData "D\178_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'False) (C1 ('MetaCons "D\178Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "rParamD\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r) :*: S1 ('MetaSel ('Just "\966ParamD\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)))

pattern :: Double -> Double -> Source #

Deprecated: Use Math.Manifold.Core.Types.D²Polar

data ℝP⁰_ r Source #

Constructors

 ℝPZero

#### Instances

Instances details
 Eq (ℝP⁰_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Methods(==) :: ℝP⁰_ r -> ℝP⁰_ r -> Bool #(/=) :: ℝP⁰_ r -> ℝP⁰_ r -> Bool # Show (ℝP⁰_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal MethodsshowsPrec :: Int -> ℝP⁰_ r -> ShowS #show :: ℝP⁰_ r -> String #showList :: [ℝP⁰_ r] -> ShowS # Generic (ℝP⁰_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Associated Typestype Rep (ℝP⁰_ r) :: Type -> Type # Methodsfrom :: ℝP⁰_ r -> Rep (ℝP⁰_ r) x #to :: Rep (ℝP⁰_ r) x -> ℝP⁰_ r # Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine Methods(.-~.) :: ℝP⁰_ r -> ℝP⁰_ r -> Maybe (Needle (ℝP⁰_ r)) Source #(.-~!) :: ℝP⁰_ r -> ℝP⁰_ r -> Needle (ℝP⁰_ r) Source # Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine Associated Typestype Needle (ℝP⁰_ r) Source # Methods(.+~^) :: ℝP⁰_ r -> Needle (ℝP⁰_ r) -> ℝP⁰_ r Source #(.-~^) :: ℝP⁰_ r -> Needle (ℝP⁰_ r) -> ℝP⁰_ r Source # type Rep (ℝP⁰_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal type Rep (ℝP⁰_ r) = D1 ('MetaData "\8477P\8304_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'False) (C1 ('MetaCons "\8477PZero" 'PrefixI 'False) (U1 :: Type -> Type)) type Needle (ℝP⁰_ r) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine type Needle (ℝP⁰_ r) = ZeroDim r

newtype ℝP¹_ r Source #

Constructors

 HemisphereℝP¹Polar FieldsφParamℝP¹ :: rRange [-π/2,π/2[.

#### Instances

Instances details
 Show r => Show (ℝP¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal MethodsshowsPrec :: Int -> ℝP¹_ r -> ShowS #show :: ℝP¹_ r -> String #showList :: [ℝP¹_ r] -> ShowS # Generic (ℝP¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Associated Typestype Rep (ℝP¹_ r) :: Type -> Type # Methodsfrom :: ℝP¹_ r -> Rep (ℝP¹_ r) x #to :: Rep (ℝP¹_ r) x -> ℝP¹_ r # ℝeal r => PseudoAffine (ℝP¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine Methods(.-~.) :: ℝP¹_ r -> ℝP¹_ r -> Maybe (Needle (ℝP¹_ r)) Source #(.-~!) :: ℝP¹_ r -> ℝP¹_ r -> Needle (ℝP¹_ r) Source # ℝeal r => Semimanifold (ℝP¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine Associated Typestype Needle (ℝP¹_ r) Source # Methods(.+~^) :: ℝP¹_ r -> Needle (ℝP¹_ r) -> ℝP¹_ r Source #(.-~^) :: ℝP¹_ r -> Needle (ℝP¹_ r) -> ℝP¹_ r Source # type Rep (ℝP¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal type Rep (ℝP¹_ r) = D1 ('MetaData "\8477P\185_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'True) (C1 ('MetaCons "Hemisphere\8477P\185Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "\966Param\8477P\185") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 r))) type Needle (ℝP¹_ r) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine type Needle (ℝP¹_ r) = r

pattern ℝP¹ :: Double -> ℝP¹ Source #

Deprecated: Use Math.Manifold.Core.Types.HemisphereℝP¹Polar (notice: different range)

type ℝP² = ℝP²_ Double Source #

The two-dimensional real projective space, implemented as a disk with opposing points on the rim glued together. Image this disk as the northern hemisphere of a unit sphere; ℝP² is the space of all straight lines passing through the origin of ℝ³, and each of these lines is represented by the point at which it passes through the hemisphere.

data ℝP²_ r Source #

Constructors

 HemisphereℝP²Polar FieldsϑParamℝP² :: !rRange [0, π/2].φParamℝP² :: !rRange [-π, π[.

#### Instances

Instances details
 Show r => Show (ℝP²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal MethodsshowsPrec :: Int -> ℝP²_ r -> ShowS #show :: ℝP²_ r -> String #showList :: [ℝP²_ r] -> ShowS # Generic (ℝP²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal Associated Typestype Rep (ℝP²_ r) :: Type -> Type # Methodsfrom :: ℝP²_ r -> Rep (ℝP²_ r) x #to :: Rep (ℝP²_ r) x -> ℝP²_ r # type Rep (ℝP²_ r) Source # Instance detailsDefined in Math.Manifold.Core.Types.Internal type Rep (ℝP²_ r) = D1 ('MetaData "\8477P\178_" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'False) (C1 ('MetaCons "Hemisphere\8477P\178Polar" 'PrefixI 'True) (S1 ('MetaSel ('Just "\977Param\8477P\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r) :*: S1 ('MetaSel ('Just "\966Param\8477P\178") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 r)))

pattern ℝP² :: Double -> Double -> ℝP² Source #

Deprecated: Use Math.Manifold.Core.Types.HemisphereℝP²Polar (notice: different range)

data Cℝay x Source #

An open cone is homeomorphic to a closed cone without the “lid”, i.e. without the “last copy” of x, at the far end of the height interval. Since that means the height does not include its supremum, it is actually more natural to express it as the entire real ray, hence the name.

Constructors

 Cℝay FieldshParamCℝay :: !(Scalar (Needle x))Range [0, ∞[pParamCℝay :: !xIrrelevant at h = 0.

#### Instances

Instances details
 (Show x, Show (Scalar (Needle x))) => Show (Cℝay x) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine MethodsshowsPrec :: Int -> Cℝay x -> ShowS #show :: Cℝay x -> String #showList :: [Cℝay x] -> ShowS # Generic (Cℝay x) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine Associated Typestype Rep (Cℝay x) :: Type -> Type # Methodsfrom :: Cℝay x -> Rep (Cℝay x) x0 #to :: Rep (Cℝay x) x0 -> Cℝay x # type Rep (Cℝay x) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine type Rep (Cℝay x) = D1 ('MetaData "C\8477ay" "Math.Manifold.Core.PseudoAffine" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'False) (C1 ('MetaCons "C\8477ay" 'PrefixI 'True) (S1 ('MetaSel ('Just "hParamC\8477ay") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Scalar (Needle x))) :*: S1 ('MetaSel ('Just "pParamC\8477ay") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 x)))

data CD¹ x Source #

A (closed) cone over a space x is the product of x with the closed interval D¹ of “heights”, except on its “tip”: here, x is smashed to a single point.

This construct becomes (homeomorphic-to-) an actual geometric cone (and to D²) in the special case x = S¹.

Constructors

 CD¹ FieldshParamCD¹ :: !(Scalar (Needle x))Range [0, 1]pParamCD¹ :: !xIrrelevant at h = 0.

#### Instances

Instances details
 (Show x, Show (Scalar (Needle x))) => Show (CD¹ x) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine MethodsshowsPrec :: Int -> CD¹ x -> ShowS #show :: CD¹ x -> String #showList :: [CD¹ x] -> ShowS # Generic (CD¹ x) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine Associated Typestype Rep (CD¹ x) :: Type -> Type # Methodsfrom :: CD¹ x -> Rep (CD¹ x) x0 #to :: Rep (CD¹ x) x0 -> CD¹ x # type Rep (CD¹ x) Source # Instance detailsDefined in Math.Manifold.Core.PseudoAffine type Rep (CD¹ x) = D1 ('MetaData "CD\185" "Math.Manifold.Core.PseudoAffine" "manifolds-core-0.6.0.0-LdN5y9b9peDJhThmTkrBbI" 'False) (C1 ('MetaCons "CD\185" 'PrefixI 'True) (S1 ('MetaSel ('Just "hParamCD\185") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Scalar (Needle x))) :*: S1 ('MetaSel ('Just "pParamCD\185") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 x)))

# Orphan instances

 HasBasis () Source # Instance details Associated Typestype Basis () # MethodsbasisValue :: Basis () -> () #decompose :: () -> [(Basis (), Scalar ())] #decompose' :: () -> Basis () -> Scalar () # Source # Instance details Associated Typestype Scalar () # Methods(*^) :: Scalar () -> () -> () # Source # Instance details Methods(<.>) :: () -> () -> Scalar () #