manifolds-0.5.0.1: Coordinate-free hypersurfaces

Copyright(c) Justus Sagemüller 2018
LicenseGPL v3
Maintainer(@) jsagemue $ uni-koeln.de
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Math.Manifold.Real.Coordinates

Contents

Description

 

Synopsis

Documentation

type Coordinate m = forall q. CoordinateIsh q m => q Source #

A coordinate is a function that can be used both to determine the position of a point on a manifold along the one of some family of (possibly curved) axes on which it lies, and for moving the point along that axis. Basically, this is a Lens and can indeed be used with the ^., .~ and %~ operators.

Coordinate m ~ Lens' m 'ℝ'

In addition, each type may also have a way of identifying particular coordinate axes. This is done with CoordinateIdentifier, which is what should be used for defining given coordinate axes.

class HasCoordinates m where Source #

To give a custom type coordinate axes, first define an instance of this class.

Minimal complete definition

coordinateAsLens

Associated Types

data CoordinateIdentifier m :: * Source #

A unique description of a coordinate axis.

Methods

coordinateAsLens :: CoordinateIdentifier m -> Lens' m Source #

How to use a coordinate axis for points in the containing space. This is what coordinate calls under the hood.

validCoordinateRange :: CoordinateIdentifier m -> m -> (, ) Source #

Delimiters for the possible values one may choose for a given coordinate, around a point on the manifold. For example, in spherical coordinates, the azimuth generally has a range of (-pi, pi), except at the poles where it's (0,0).

Instances

HasCoordinates Source # 
HasCoordinates Source # 
HasCoordinates Source # 
HasCoordinates ℝ⁰ Source # 
HasCoordinates ℝ³ Source # 
HasCoordinates ℝ² Source # 
(HasCoordinates a, HasCoordinates b) => HasCoordinates (a, b) Source # 

Associated Types

data CoordinateIdentifier (a, b) :: * Source #

(HasCoordinates b, HasCoordinates f) => HasCoordinates (FibreBundle b f) Source # 

Vector space axes

class HasCoordinates m => HasXCoord m where Source #

Minimal complete definition

xCoord

class HasYCoord m where Source #

Minimal complete definition

yCoord

class HasZCoord m where Source #

Minimal complete definition

zCoord

Instances

Fibre bundle / tangent space diffs

class HasCoordinates m => CoordDifferential m where Source #

Minimal complete definition

delta

Methods

delta :: CoordinateIdentifier m -> Coordinate (TangentBundle m) Source #

Observe local, small variations (in the tangent space) of a coordinate. The idea is that ((p & coord+~δc) − p) ^. delta coord ≈ δc, thus the name “delta”. Note however that this only holds exactly for flat spaces; in most manifolds it can (by design) only be understood in an asymptotic sense, i.e. used for evaluating directional derivatives of some function. In particular, delta azimuth is unstable near the poles of a sphere, because it has to compensate for the sensitive rotation of the unit vector.

Spherical coordinates

class HasAzimuth m where Source #

Minimal complete definition

azimuth

class HasZenithDistance m where Source #

Minimal complete definition

zenithAngle