Copyright | (c) Justus Sagemüller 2015 |
---|---|
License | GPL v3 |
Maintainer | (@) sagemueller $ geo.uni-koeln.de |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Riemannian manifolds are manifolds equipped with a Metric
at each point.
That means, these manifolds aren't merely topological objects anymore, but
have a geometry as well. This gives, in particular, a notion of distance
and shortest paths (geodesics) along which you can interpolate.
Keep in mind that the types in this library are
generally defined in an abstract-mathematical spirit, which may not always
match the intuition if you think about manifolds as embedded in ℝ³.
(For instance, the torus inherits its geometry from the decomposition as
'S¹' × 'S¹'
, not from the “doughnut” embedding; the cone over S¹
is
simply treated as the unit disk, etc..)
- data GeodesicWitness x where
- GeodesicWitness :: Geodesic (Interior x) => SemimanifoldWitness x -> GeodesicWitness x
- class Semimanifold x => Geodesic x where
- geodesicBetween :: x -> x -> Maybe (D¹ -> x)
- geodesicWitness :: GeodesicWitness x
- middleBetween :: x -> x -> Maybe x
- interpolate :: (Geodesic x, IntervalLike i) => x -> x -> Maybe (i -> x)
- class WithField ℝ PseudoAffine i => IntervalLike i where
- toClosedInterval :: i -> D¹
- class Geodesic m => Riemannian m where
- pointsBarycenter :: Geodesic m => NonEmpty m -> Maybe m
- type FlatSpace x = (AffineManifold x, Geodesic x, SimpleSpace x)
Documentation
data GeodesicWitness x where Source
GeodesicWitness :: Geodesic (Interior x) => SemimanifoldWitness x -> GeodesicWitness x |
class Semimanifold x => Geodesic x where Source
:: x | Starting point; the interpolation will yield this at -1. |
-> x | End point, for +1. If the two points are actually connected by a path... |
-> Maybe (D¹ -> x) | ...then this is the interpolation function. Attention:
the type will change to |
geodesicWitness :: GeodesicWitness x Source
middleBetween :: x -> x -> Maybe x Source
Geodesic ℝ Source | |
Geodesic S⁰ Source | |
Geodesic S¹ Source | |
Geodesic ℝ⁴ Source | |
Geodesic ℝ³ Source | |
Geodesic ℝ² Source | |
Geodesic ℝ¹ Source | |
Geodesic (V0 ℝ) Source | |
Geodesic (ZeroDim s) Source | |
(Geodesic v, FiniteFreeSpace v, FiniteFreeSpace (DualVector v), LinearSpace v, (~) * (Scalar v) ℝ, Geodesic (DualVector v), InnerSpace (DualVector v)) => Geodesic (Stiefel1 v) Source | |
(WithField ℝ AffineManifold x, Geodesic x, SimpleSpace (Needle x)) => Geodesic (Shade' x) Source | |
(WithField ℝ PseudoAffine x, Geodesic (Interior x), SimpleSpace (Needle x)) => Geodesic (Shade x) Source | |
(Geodesic a, Geodesic b) => Geodesic (a, b) Source | |
(Geodesic a, Geodesic b, Geodesic c) => Geodesic (a, b, c) Source | |
(TensorSpace v, (~) * (Scalar v) ℝ, TensorSpace w, (~) * (Scalar w) ℝ) => Geodesic (Tensor ℝ v w) Source | |
(LinearSpace v, (~) * (Scalar v) ℝ, TensorSpace w, (~) * (Scalar w) ℝ) => Geodesic (LinearMap ℝ v w) Source | |
(TensorSpace v, (~) * (Scalar v) ℝ, TensorSpace w, (~) * (Scalar w) ℝ) => Geodesic (LinearFunction ℝ v w) Source |
interpolate :: (Geodesic x, IntervalLike i) => x -> x -> Maybe (i -> x) Source
class WithField ℝ PseudoAffine i => IntervalLike i where Source
One-dimensional manifolds, whose closure is homeomorpic to the unit interval.
toClosedInterval :: i -> D¹ Source
pointsBarycenter :: Geodesic m => NonEmpty m -> Maybe m Source
type FlatSpace x = (AffineManifold x, Geodesic x, SimpleSpace x) Source