manifolds-0.6.0.0: 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

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

Instances details
HasCoordinates Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier Source #

HasCoordinates Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier Source #

HasCoordinates Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier Source #

HasCoordinates ℝ⁰ Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier ℝ⁰ Source #

HasCoordinates ℝ³ Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier ℝ³ Source #

HasCoordinates ℝ² Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier ℝ² Source #

(HasCoordinates a, HasCoordinates b) => HasCoordinates (a, b) Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier (a, b) Source #

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

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier (FibreBundle b f) Source #

Vector space axes

class HasCoordinates m => HasXCoord m where Source #

Instances

Instances details
HasXCoord Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

HasXCoord ℝ³ Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

HasXCoord ℝ² Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

(HasXCoord v, HasCoordinates w) => HasXCoord (v, w) Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Methods

xCoord :: Coordinate (v, w) Source #

class HasYCoord m where Source #

Instances

Instances details
HasYCoord ℝ³ Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

HasYCoord ℝ² Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

HasCoordinates w => HasYCoord ((, ), w) Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Methods

yCoord :: Coordinate ((, ), w) Source #

HasXCoord w => HasYCoord (, w) Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Methods

yCoord :: Coordinate (, w) Source #

class HasZCoord m where Source #

Instances

Instances details
HasZCoord ℝ³ Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

HasXCoord w => HasZCoord ((, ), w) Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Methods

zCoord :: Coordinate ((, ), w) Source #

HasYCoord w => HasZCoord (, w) Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Methods

zCoord :: Coordinate (, w) Source #

Fibre bundle / tangent space diffs

class HasCoordinates m => CoordDifferential m where Source #

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 #

Instances

Instances details
HasAzimuth Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

HasAzimuth Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

class HasZenithDistance m where Source #

Instances

Instances details
HasZenithDistance Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates