manifolds-0.6.0.0: Coordinate-free hypersurfaces
Copyright(c) Justus Sagemüller 2018
LicenseGPL v3
Maintainer(@) jsag $ hvl.no
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Math.Manifold.Embedding.Simple.Class

Description

Some manifolds are “naturally” embedded within some bigger space. For instance, the topological spheres are readily identified with the geometric unit spheres in real vector spaces.

An embedding is a pretty strong relationship, but often all that's needed is being able to map single points from the manifold to the enclosing space. This module offers a class which does just that.

Documentation

class NaturallyEmbedded m v where Source #

Methods

embed :: m -> v Source #

coEmbed :: v -> m Source #

Instances

Instances details
NaturallyEmbedded Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: -> Source #

coEmbed :: -> Source #

(VectorSpace y, VectorSpace z) => NaturallyEmbedded x ((x, y), z) Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: x -> ((x, y), z) Source #

coEmbed :: ((x, y), z) -> x Source #

VectorSpace y => NaturallyEmbedded x (x, y) Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: x -> (x, y) Source #

coEmbed :: (x, y) -> x Source #

AdditiveGroup f => NaturallyEmbedded x (FibreBundle x f) Source # 
Instance details

Defined in Data.Manifold.FibreBundle

Methods

embed :: x -> FibreBundle x f Source #

coEmbed :: FibreBundle x f -> x Source #

(RealFloat s, VectorSpace s, s' ~ s) => NaturallyEmbedded (S⁰_ s) s' Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: S⁰_ s -> s' Source #

coEmbed :: s' -> S⁰_ s Source #

(RealFloat s, VectorSpace s, s' ~ s) => NaturallyEmbedded (D¹_ s) s' Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: D¹_ s -> s' Source #

coEmbed :: s' -> D¹_ s Source #

(Num s, s ~ s') => NaturallyEmbedded (V2 s) (V2 s') Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: V2 s -> V2 s' Source #

coEmbed :: V2 s' -> V2 s Source #

(Num s, s ~ s') => NaturallyEmbedded (V3 s) (V3 s') Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: V3 s -> V3 s' Source #

coEmbed :: V3 s' -> V3 s Source #

(Num s, s ~ s') => NaturallyEmbedded (V4 s) (V4 s') Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: V4 s -> V4 s' Source #

coEmbed :: V4 s' -> V4 s Source #

(Num s, s ~ s') => NaturallyEmbedded (ZeroDim s) (ZeroDim s') Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: ZeroDim s -> ZeroDim s' Source #

coEmbed :: ZeroDim s' -> ZeroDim s Source #

(RealFloat s, s' ~ s) => NaturallyEmbedded (S¹_ s) (V2 s') Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: S¹_ s -> V2 s' Source #

coEmbed :: V2 s' -> S¹_ s Source #

(RealFloat s, s' ~ s) => NaturallyEmbedded (S²_ s) (V3 s') Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: S²_ s -> V3 s' Source #

coEmbed :: V3 s' -> S²_ s Source #

(RealFloat s, s' ~ s) => NaturallyEmbedded (ℝP²_ s) (V3 s') Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: ℝP²_ s -> V3 s' Source #

coEmbed :: V3 s' -> ℝP²_ s Source #

(Real s, NaturallyEmbedded x p, s ~ Scalar (Needle x)) => NaturallyEmbedded (Cℝay x) (p, s) Source # 
Instance details

Defined in Data.Manifold.Types.Primitive

Methods

embed :: Cℝay x -> (p, s) Source #

coEmbed :: (p, s) -> Cℝay x Source #

(AdditiveGroup y, AdditiveGroup g) => NaturallyEmbedded (FibreBundle x f) (FibreBundle (x, y) (f, g)) Source # 
Instance details

Defined in Data.Manifold.FibreBundle

Methods

embed :: FibreBundle x f -> FibreBundle (x, y) (f, g) Source #

coEmbed :: FibreBundle (x, y) (f, g) -> FibreBundle x f Source #

(NaturallyEmbedded m v, VectorSpace f) => NaturallyEmbedded (FibreBundle m (ZeroDim s)) (FibreBundle v f) Source # 
Instance details

Defined in Data.Manifold.FibreBundle

(NaturallyEmbedded v w, s' ~ s) => NaturallyEmbedded (FibreBundle (V2 s) v) (FibreBundle (V2 s') w) Source # 
Instance details

Defined in Data.Manifold.FibreBundle

Methods

embed :: FibreBundle (V2 s) v -> FibreBundle (V2 s') w Source #

coEmbed :: FibreBundle (V2 s') w -> FibreBundle (V2 s) v Source #

(NaturallyEmbedded v w, s' ~ s) => NaturallyEmbedded (FibreBundle (V3 s) v) (FibreBundle (V3 s') w) Source # 
Instance details

Defined in Data.Manifold.FibreBundle

Methods

embed :: FibreBundle (V3 s) v -> FibreBundle (V3 s') w Source #

coEmbed :: FibreBundle (V3 s') w -> FibreBundle (V3 s) v Source #

(NaturallyEmbedded v w, s' ~ s) => NaturallyEmbedded (FibreBundle (V4 s) v) (FibreBundle (V4 s') w) Source # 
Instance details

Defined in Data.Manifold.FibreBundle

Methods

embed :: FibreBundle (V4 s) v -> FibreBundle (V4 s') w Source #

coEmbed :: FibreBundle (V4 s') w -> FibreBundle (V4 s) v Source #

(RealFloat s, InnerSpace s, s ~ s', s ~ s'', s ~ s''') => NaturallyEmbedded (FibreBundle (S¹_ s) s') (FibreBundle (V2 s'') (V2 s''')) Source # 
Instance details

Defined in Data.Manifold.FibreBundle

Methods

embed :: FibreBundle (S¹_ s) s' -> FibreBundle (V2 s'') (V2 s''') Source #

coEmbed :: FibreBundle (V2 s'') (V2 s''') -> FibreBundle (S¹_ s) s' Source #

(RealFloat' s, InnerSpace s, s ~ s', s ~ s'', s ~ s''') => NaturallyEmbedded (FibreBundle (S²_ s) (V2 s')) (FibreBundle (V3 s'') (V3 s''')) Source # 
Instance details

Defined in Data.Manifold.FibreBundle

Methods

embed :: FibreBundle (S²_ s) (V2 s') -> FibreBundle (V3 s'') (V3 s''') Source #

coEmbed :: FibreBundle (V3 s'') (V3 s''') -> FibreBundle (S²_ s) (V2 s') Source #

NaturallyEmbedded v w => NaturallyEmbedded (FibreBundle v) (FibreBundle w) Source # 
Instance details

Defined in Data.Manifold.FibreBundle