Copyright | (c) Justus Sagemüller 2016 |
---|---|
License | GPL v3 |
Maintainer | (@) jsag $ hvl.no |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Several low-dimensional manifolds, represented in some simple way as Haskell
data types. All these are in the PseudoAffine
class.
Synopsis
- data EmptyMfd v
- type ℝ⁰ = ZeroDim ℝ
- type ℝ = Double
- type S⁰ = S⁰_ Double
- data S⁰_ r
- otherHalfSphere :: S⁰ -> S⁰
- type S¹ = S¹_ Double
- newtype S¹_ r = S¹Polar {
- φParamS¹ :: r
- pattern S¹ :: Double -> S¹
- type S² = S²_ Double
- data S²_ r = S²Polar {}
- pattern S² :: Double -> Double -> S²
- type D¹ = D¹_ Double
- newtype D¹_ r = D¹ {
- xParamD¹ :: r
- fromIntv0to1 :: ℝ -> D¹
- type D² = D²_ Double
- data D²_ r = D²Polar {}
- pattern D² :: Double -> Double -> D²
- type ℝP⁰ = ℝP⁰_ Double
- data ℝP⁰_ r = ℝPZero
- type ℝP¹ = ℝP¹_ Double
- newtype ℝP¹_ r = HemisphereℝP¹Polar {
- φParamℝP¹ :: r
- pattern ℝP¹ :: Double -> ℝP¹
- type ℝP² = ℝP²_ Double
- data ℝP²_ r = HemisphereℝP²Polar {}
- pattern ℝP² :: Double -> Double -> ℝP²
- data Cℝay x = Cℝay {
- hParamCℝay :: !(Scalar (Needle x))
- pParamCℝay :: !x
- data CD¹ x = CD¹ {}
Documentation
The empty space can be considered a manifold with any sort of tangent space.
Instances
Eq (EmptyMfd v) Source # | |
Ord (EmptyMfd v) Source # | |
Defined in Math.Manifold.Core.Types.Internal | |
Empty (EmptyMfd v) Source # | |
Defined in Math.Manifold.Core.Types.Internal |
The zero-dimensional sphere is actually just two points. Implementation might
therefore change to ℝ⁰
: the disjoint sum of two
single-point spaces.+
ℝ⁰
otherHalfSphere :: S⁰ -> S⁰ Source #
Instances
(Eq r, RealFloat r) => Eq (S²_ r) Source # | |
Show r => Show (S²_ r) Source # | |
Generic (S²_ r) Source # | |
type Rep (S²_ r) Source # | |
Defined 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))) |
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.
fromIntv0to1 :: ℝ -> D¹ Source #
Instances
Show r => Show (D²_ r) Source # | |
Generic (D²_ r) Source # | |
type Rep (D²_ r) Source # | |
Defined 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))) |
HemisphereℝP¹Polar | |
|
Instances
Show r => Show (ℝP¹_ r) Source # | |
Generic (ℝP¹_ r) Source # | |
ℝeal r => PseudoAffine (ℝP¹_ r) Source # | |
ℝeal r => Semimanifold (ℝP¹_ r) Source # | |
type Rep (ℝP¹_ r) Source # | |
Defined 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 # | |
Defined in Math.Manifold.Core.PseudoAffine |
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.
Instances
Show r => Show (ℝP²_ r) Source # | |
Generic (ℝP²_ r) Source # | |
type Rep (ℝP²_ r) Source # | |
Defined 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)
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.
Cℝay | |
|
Instances
(Show x, Show (Scalar (Needle x))) => Show (Cℝay x) Source # | |
Generic (Cℝay x) Source # | |
type Rep (Cℝay x) Source # | |
Defined 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))) |
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¹
Instances
(Show x, Show (Scalar (Needle x))) => Show (CD¹ x) Source # | |
Generic (CD¹ x) Source # | |
type Rep (CD¹ x) Source # | |
Defined 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))) |