Copyright | (c) Justus Sagemüller 2016 |
---|---|
License | GPL v3 |
Maintainer | (@) jsag $ hvl.no |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Several low-dimensional manifolds, represented in some simple way as Haskell
data types. All these are in the PseudoAffine
class.
Synopsis
- type ℝ⁰ = ZeroDim ℝ
- type ℝ = Double
- data S⁰
- otherHalfSphere :: S⁰ -> S⁰
- newtype S¹ = S¹Polar {}
- pattern S¹ :: Double -> S¹
- data S² = S²Polar {}
- pattern S² :: Double -> Double -> S²
- newtype D¹ = D¹ {}
- fromIntv0to1 :: ℝ -> D¹
- data D² = D²Polar {}
- pattern D² :: Double -> Double -> D²
- data ℝP⁰ = ℝPZero
- newtype ℝP¹ = HemisphereℝP¹Polar {}
- pattern ℝP¹ :: Double -> ℝP¹
- data ℝP² = HemisphereℝP²Polar {}
- pattern ℝP² :: Double -> Double -> ℝP²
- data Cℝay x = Cℝay {
- hParamCℝay :: !Double
- pParamCℝay :: !x
- data CD¹ x = CD¹ {}
Documentation
The zero-dimensional sphere is actually just two points. Implementation might
therefore change to ℝ⁰
: the disjoint sum of two
single-point spaces.+
ℝ⁰
Instances
Eq S⁰ Source # | |
Show S⁰ Source # | |
Generic S⁰ Source # | |
PseudoAffine S⁰ Source # | |
Semimanifold S⁰ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Rep S⁰ Source # | |
Defined in Math.Manifold.Core.Types.Internal | |
type Needle S⁰ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Interior S⁰ Source # | |
Defined in Math.Manifold.Core.PseudoAffine |
otherHalfSphere :: S⁰ -> S⁰ Source #
The unit circle.
Instances
Eq S¹ Source # | |
Show S¹ Source # | |
Generic S¹ Source # | |
PseudoAffine S¹ Source # | |
Semimanifold S¹ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Rep S¹ Source # | |
Defined in Math.Manifold.Core.Types.Internal | |
type Needle S¹ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Interior S¹ Source # | |
Defined in Math.Manifold.Core.PseudoAffine |
The ordinary unit sphere.
Instances
Eq S² Source # | |
Show S² Source # | |
Generic S² Source # | |
type Rep S² Source # | |
Defined in Math.Manifold.Core.Types.Internal type Rep S² = D1 (MetaData "S\178" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.5.1.0-7erFyQcGCyw3Wj1JfXnH10" False) (C1 (MetaCons "S\178Polar" PrefixI True) (S1 (MetaSel (Just "\977ParamS\178") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: S1 (MetaSel (Just "\966ParamS\178") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double))) |
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.
Instances
Show D¹ Source # | |
Generic D¹ Source # | |
PseudoAffine D¹ Source # | |
Semimanifold D¹ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Rep D¹ Source # | |
Defined in Math.Manifold.Core.Types.Internal | |
type Needle D¹ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Interior D¹ Source # | |
Defined in Math.Manifold.Core.PseudoAffine |
fromIntv0to1 :: ℝ -> D¹ 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²
!)
Instances
Show D² Source # | |
Generic D² Source # | |
type Rep D² Source # | |
Defined in Math.Manifold.Core.Types.Internal type Rep D² = D1 (MetaData "D\178" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.5.1.0-7erFyQcGCyw3Wj1JfXnH10" False) (C1 (MetaCons "D\178Polar" PrefixI True) (S1 (MetaSel (Just "rParamD\178") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: S1 (MetaSel (Just "\966ParamD\178") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double))) |
Instances
Eq ℝP⁰ Source # | |
Show ℝP⁰ Source # | |
Generic ℝP⁰ Source # | |
PseudoAffine ℝP⁰ Source # | |
Semimanifold ℝP⁰ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Rep ℝP⁰ Source # | |
type Needle ℝP⁰ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Interior ℝP⁰ Source # | |
Defined in Math.Manifold.Core.PseudoAffine |
Instances
Show ℝP¹ Source # | |
Generic ℝP¹ Source # | |
PseudoAffine ℝP¹ Source # | |
Semimanifold ℝP¹ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Rep ℝP¹ Source # | |
Defined in Math.Manifold.Core.Types.Internal | |
type Needle ℝP¹ Source # | |
Defined in Math.Manifold.Core.PseudoAffine | |
type Interior ℝP¹ Source # | |
Defined in Math.Manifold.Core.PseudoAffine |
pattern ℝP¹ :: Double -> ℝP¹ Source #
Deprecated: Use Math.Manifold.Core.Types.HemisphereℝP¹Polar (notice: different range)
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 ℝP² Source # | |
Generic ℝP² Source # | |
type Rep ℝP² Source # | |
Defined in Math.Manifold.Core.Types.Internal type Rep ℝP² = D1 (MetaData "\8477P\178" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.5.1.0-7erFyQcGCyw3Wj1JfXnH10" False) (C1 (MetaCons "Hemisphere\8477P\178Polar" PrefixI True) (S1 (MetaSel (Just "\977Param\8477P\178") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: S1 (MetaSel (Just "\966Param\8477P\178") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double))) |
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 (Cℝay x) Source # | |
Generic (Cℝay x) Source # | |
type Rep (Cℝay x) Source # | |
Defined in Math.Manifold.Core.Types.Internal type Rep (Cℝay x) = D1 (MetaData "C\8477ay" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.5.1.0-7erFyQcGCyw3Wj1JfXnH10" False) (C1 (MetaCons "C\8477ay" PrefixI True) (S1 (MetaSel (Just "hParamC\8477ay") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: 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 (CD¹ x) Source # | |
Generic (CD¹ x) Source # | |
type Rep (CD¹ x) Source # | |
Defined in Math.Manifold.Core.Types.Internal type Rep (CD¹ x) = D1 (MetaData "CD\185" "Math.Manifold.Core.Types.Internal" "manifolds-core-0.5.1.0-7erFyQcGCyw3Wj1JfXnH10" False) (C1 (MetaCons "CD\185" PrefixI True) (S1 (MetaSel (Just "hParamCD\185") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 Double) :*: S1 (MetaSel (Just "pParamCD\185") NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 x))) |