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
- interpolate :: (Geodesic x, IntervalLike i) => x -> x -> Maybe (i -> x)
- class WithField ℝ PseudoAffine i => IntervalLike i where
- 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 #
geodesicWitness :: Geodesic (Interior x) => GeodesicWitness x Source #
middleBetween :: x -> x -> Maybe x 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 #
class Geodesic m => Riemannian m where Source #
type FlatSpace x = (AffineManifold x, Geodesic x, SimpleSpace x) Source #