Copyright | (c) Justus Sagemüller 2015 |
---|---|

License | GPL v3 |

Maintainer | (@) jsag $ hvl.no |

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

, not from the “doughnut” embedding; the cone over `S¹`

× `S¹`

`S¹`

is
simply treated as the unit disk, etc..)

## Synopsis

- 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 #

geodesicWitness :: Geodesic (Interior x) => GeodesicWitness x Source #

middleBetween :: x -> x -> Maybe x Source #

## Instances

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 #

## Instances

IntervalLike D¹ Source # | |

Defined in Data.Manifold.Riemannian toClosedInterval :: D¹ -> D¹ Source # | |

IntervalLike ℝ Source # | |

Defined in Data.Manifold.Riemannian toClosedInterval :: ℝ -> D¹ Source # |

class Geodesic m => Riemannian m where Source #

## Instances

Riemannian ℝ Source # | |

type FlatSpace x = (AffineManifold x, Geodesic x, SimpleSpace x) Source #