manifolds-0.5.1.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

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

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier :: Type Source #

HasCoordinates Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier :: Type Source #

HasCoordinates Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier :: Type Source #

HasCoordinates ℝ⁰ Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier ℝ⁰ :: Type Source #

HasCoordinates ℝ³ Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier ℝ³ :: Type Source #

HasCoordinates ℝ² Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier ℝ² :: Type Source #

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

Defined in Math.Manifold.Real.Coordinates

Associated Types

data CoordinateIdentifier (a, b) :: Type 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) :: Type Source #

Vector space axes

class HasCoordinates m => HasXCoord m where Source #

Instances
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
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
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
HasAzimuth Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates

HasAzimuth Source # 
Instance details

Defined in Math.Manifold.Real.Coordinates