diagrams-lib- Embedded domain-specific language for declarative graphics

Copyright(c) 2011 diagrams-lib team (see LICENSE)
LicenseBSD-style (see LICENSE)
Safe HaskellNone




Basic types for three-dimensional Euclidean space.


3D Euclidean space

r3 :: (Double, Double, Double) -> R3 Source

Construct a 3D vector from a triple of components.

unr3 :: R3 -> (Double, Double, Double) Source

Convert a 3D vector back into a triple of components.

mkR3 :: Double -> Double -> Double -> R3 Source

Curried version of r3.

type P3 = Point R3 Source

Points in R^3.

p3 :: (Double, Double, Double) -> P3 Source

Construct a 3D point from a triple of coordinates.

unp3 :: P3 -> (Double, Double, Double) Source

Convert a 3D point back into a triple of coordinates.

mkP3 :: Double -> Double -> Double -> P3 Source

Curried version of r3.

type T3 = Transformation R3 Source

Transformations in R^3.

Directions in 3D

data Direction Source

A Direction represents directions in R3. The constructor is not exported; Directions can be used with fromDirection and the lenses provided by its instances.

direction :: R3 -> Direction Source

direction v is the direction in which v points. Returns an unspecified value when given the zero vector as input.

fromDirection :: Direction -> R3 Source

fromDirection d is the unit vector in the direction d.

angleBetweenDirs :: Direction -> Direction -> Angle Source

compute the positive angle between the two directions in their common plane

other coördinate systems

class Spherical t where Source

Types which can be expressed in spherical 3D coordinates, as a triple (r,θ,φ), where θ is rotation about the Z axis, and φ is the angle from the Z axis.


class Cylindrical t where Source

Types which can be expressed in cylindrical 3D coordinates.

class HasPhi t where Source

The class of types with at least two angle coordinates, the second called _phi.

Minimal complete definition



_phi :: Lens' t Angle Source