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

Safe HaskellNone




Basic types for three-dimensional Euclidean space.


3D Euclidean space

r3 :: (Double, Double, Double) -> R3Source

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

Curried version of r3.

type P3 = Point R3Source

Points in R^3.

p3 :: (Double, Double, Double) -> P3Source

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

Curried version of r3.

type T3 = Transformation R3Source

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

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

fromDirection :: Direction -> R3Source

fromDirection d is the unit vector in the direction d.

angleBetweenDirs :: Direction -> Direction -> AngleSource

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

other coördinate systems

class Spherical t whereSource

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


class Cylindrical t whereSource

Types which can be expressed in cylindrical 3D coordinates.

class HasPhi t whereSource

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


_phi :: Lens' t AngleSource