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

Data.Function.Affine

Contents

Description

 
Synopsis

Documentation

data Affine s d c where Source #

Constructors

Affine :: (ChartIndex d :->: (c, LinearMap s (Needle d) (Needle c))) -> Affine s d c 

Instances

Instances details
Category (Affine s :: Type -> Type -> Type) Source # 
Instance details

Defined in Data.Function.Affine

Associated Types

type Object (Affine s) o #

Methods

id :: forall (a :: κ). Object (Affine s) a => Affine s a a #

(.) :: forall (a :: κ) (b :: κ) (c :: κ). (Object (Affine s) a, Object (Affine s) b, Object (Affine s) c) => Affine s b c -> Affine s a b -> Affine s a c #

(ScalarManifold s, Eq s) => Morphism (Affine s) Source # 
Instance details

Defined in Data.Function.Affine

Methods

first :: (ObjectPair (Affine s) b d, ObjectPair (Affine s) c d) => Affine s b c -> Affine s (b, d) (c, d) #

second :: (ObjectPair (Affine s) d b, ObjectPair (Affine s) d c) => Affine s b c -> Affine s (d, b) (d, c) #

(***) :: (ObjectPair (Affine s) b b', ObjectPair (Affine s) c c') => Affine s b c -> Affine s b' c' -> Affine s (b, b') (c, c') #

(ScalarManifold s, Eq s) => PreArrow (Affine s) Source # 
Instance details

Defined in Data.Function.Affine

Methods

(&&&) :: (Object (Affine s) b, ObjectPair (Affine s) c c') => Affine s b c -> Affine s b c' -> Affine s b (c, c') #

terminal :: Object (Affine s) b => Affine s b (UnitObject (Affine s)) #

fst :: ObjectPair (Affine s) x y => Affine s (x, y) x #

snd :: ObjectPair (Affine s) x y => Affine s (x, y) y #

(ScalarManifold s, Eq s) => WellPointed (Affine s) Source # 
Instance details

Defined in Data.Function.Affine

Associated Types

type PointObject (Affine s) x #

Methods

globalElement :: ObjectPoint (Affine s) x => x -> Affine s (UnitObject (Affine s)) x #

unit :: CatTagged (Affine s) (UnitObject (Affine s)) #

const :: (Object (Affine s) b, ObjectPoint (Affine s) x) => x -> Affine s b x #

(ScalarManifold s, Eq s) => Cartesian (Affine s) Source # 
Instance details

Defined in Data.Function.Affine

Associated Types

type PairObjects (Affine s) a b #

type UnitObject (Affine s) #

Methods

swap :: (ObjectPair (Affine s) a b, ObjectPair (Affine s) b a) => Affine s (a, b) (b, a) #

attachUnit :: (unit ~ UnitObject (Affine s), ObjectPair (Affine s) a unit) => Affine s a (a, unit) #

detachUnit :: (unit ~ UnitObject (Affine s), ObjectPair (Affine s) a unit) => Affine s (a, unit) a #

regroup :: (ObjectPair (Affine s) a b, ObjectPair (Affine s) b c, ObjectPair (Affine s) a (b, c), ObjectPair (Affine s) (a, b) c) => Affine s (a, (b, c)) ((a, b), c) #

regroup' :: (ObjectPair (Affine s) a b, ObjectPair (Affine s) b c, ObjectPair (Affine s) a (b, c), ObjectPair (Affine s) (a, b) c) => Affine s ((a, b), c) (a, (b, c)) #

EnhancedCat (Affine s) (LinearMap s) Source # 
Instance details

Defined in Data.Function.Affine

Methods

arr :: (Object (LinearMap s) b, Object (LinearMap s) c, Object (Affine s) b, Object (Affine s) c) => LinearMap s b c -> Affine s b c #

EnhancedCat ((->) :: Type -> Type -> Type) (Affine s) Source # 
Instance details

Defined in Data.Function.Affine

Methods

arr :: (Object (Affine s) b, Object (Affine s) c, Object (->) b, Object (->) c) => Affine s b c -> b -> c #

(Atlas x, HasTrie (ChartIndex x), LinearManifold (Needle x), Scalar (Needle x) ~ s, LinearManifold y, Scalar y ~ s, Num' s) => AdditiveGroup (Affine s x y) Source # 
Instance details

Defined in Data.Function.Affine

Methods

zeroV :: Affine s x y #

(^+^) :: Affine s x y -> Affine s x y -> Affine s x y #

negateV :: Affine s x y -> Affine s x y #

(^-^) :: Affine s x y -> Affine s x y -> Affine s x y #

(Atlas x, HasTrie (ChartIndex x), LinearManifold (Needle x), Scalar (Needle x) ~ s, LinearManifold y, Scalar y ~ s, Num' s) => VectorSpace (Affine s x y) Source # 
Instance details

Defined in Data.Function.Affine

Associated Types

type Scalar (Affine s x y) #

Methods

(*^) :: Scalar (Affine s x y) -> Affine s x y -> Affine s x y #

(Atlas x, HasTrie (ChartIndex x), LinearManifold (Needle x), Scalar (Needle x) ~ s, LinearManifold (Needle y), Scalar (Needle y) ~ s, Manifold y, Scalar (Needle y) ~ s) => AffineSpace (Affine s x y) Source # 
Instance details

Defined in Data.Function.Affine

Associated Types

type Diff (Affine s x y) #

Methods

(.-.) :: Affine s x y -> Affine s x y -> Diff (Affine s x y) #

(.+^) :: Affine s x y -> Diff (Affine s x y) -> Affine s x y #

(Atlas x, HasTrie (ChartIndex x), Manifold y, LinearManifold (Needle x), Scalar (Needle x) ~ s, LinearManifold (Needle y), Scalar (Needle y) ~ s) => PseudoAffine (Affine s x y) Source # 
Instance details

Defined in Data.Function.Affine

Methods

(.-~.) :: Affine s x y -> Affine s x y -> Maybe (Needle (Affine s x y)) #

(.-~!) :: Affine s x y -> Affine s x y -> Needle (Affine s x y) #

pseudoAffineWitness :: PseudoAffineWitness (Affine s x y) #

(Atlas x, HasTrie (ChartIndex x), Manifold y, LinearManifold (Needle x), Scalar (Needle x) ~ s, LinearManifold (Needle y), Scalar (Needle y) ~ s) => Semimanifold (Affine s x y) Source # 
Instance details

Defined in Data.Function.Affine

Associated Types

type Needle (Affine s x y) #

Methods

(.+~^) :: Affine s x y -> Needle (Affine s x y) -> Affine s x y #

(.-~^) :: Affine s x y -> Needle (Affine s x y) -> Affine s x y #

semimanifoldWitness :: SemimanifoldWitness (Affine s x y) #

type Object (Affine s :: Type -> Type -> Type) (x :: Type) Source # 
Instance details

Defined in Data.Function.Affine

type Object (Affine s :: Type -> Type -> Type) (x :: Type) = (Manifold x, Atlas' x, Scalar (Needle x) ~ s)
type UnitObject (Affine s) Source # 
Instance details

Defined in Data.Function.Affine

type PointObject (Affine s) x Source # 
Instance details

Defined in Data.Function.Affine

type PointObject (Affine s) x = ()
type PairObjects (Affine s) a b Source # 
Instance details

Defined in Data.Function.Affine

type PairObjects (Affine s) a b = ()
type Scalar (Affine s x y) Source # 
Instance details

Defined in Data.Function.Affine

type Scalar (Affine s x y) = s
type Diff (Affine s x y) Source # 
Instance details

Defined in Data.Function.Affine

type Diff (Affine s x y) = Affine s x (Needle y)
type Needle (Affine s x y) Source # 
Instance details

Defined in Data.Function.Affine

type Needle (Affine s x y) = Affine s x (Needle y)

evalAffine :: forall x y s. (Manifold x, Atlas x, HasTrie (ChartIndex x), Manifold y, s ~ Scalar (Needle x), s ~ Scalar (Needle y)) => Affine s x y -> x -> (y, LinearMap s (Needle x) (Needle y)) Source #

fromOffsetSlope :: forall x y s. (LinearSpace x, Atlas x, HasTrie (ChartIndex x), Manifold y, s ~ Scalar x, s ~ Scalar (Needle y)) => y -> LinearMap s x (Needle y) -> Affine s x y Source #

Misc

lensEmbedding :: forall k x c s. (Num' s, LinearSpace x, LinearSpace c, Object k x, Object k c, Scalar x ~ s, Scalar c ~ s, EnhancedCat k (LinearMap s)) => Lens' x c -> Embedding k c x Source #

correspondingDirections :: forall x c t s. (WithField s AffineManifold c, WithField s AffineManifold x, SemiInner (Needle c), SemiInner (Needle x), RealFrac' s, Traversable t) => (c, x) -> t (Needle c, Needle x) -> Maybe (Embedding (Affine s) c x) Source #