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

Maintainerdiagrams-discuss@googlegroups.com
Safe HaskellNone

Diagrams.TwoD.Types

Contents

Description

Basic types for two-dimensional Euclidean space.

Synopsis

2D Euclidean space

data R2 Source

The two-dimensional Euclidean vector space R^2. This type is intentionally abstract.

 r2 (3,4) :: R2
 3 ^& 4    :: R2

Note that Diagrams.Coordinates is not re-exported by Diagrams.Prelude and must be explicitly imported.

  • To construct the vector from the origin to a point p, use p .-. origin.
  • To convert a vector v into the point obtained by following v from the origin, use origin .+^ v.
  • To convert a vector back into a pair of components, use unv2 or coords (from Diagrams.Coordinates). These are typically used in conjunction with the ViewPatterns extension:
 foo (unr2 -> (x,y)) = ...
 foo (coords -> x :& y) = ...

Constructors

R2 !Double !Double 

r2 :: (Double, Double) -> R2Source

Construct a 2D vector from a pair of components. See also &.

unr2 :: R2 -> (Double, Double)Source

Convert a 2D vector back into a pair of components. See also coords.

mkR2 :: Double -> Double -> R2Source

Curried form of r2.

type P2 = Point R2Source

Points in R^2. This type is intentionally abstract.

 p2 (3,4)  :: P2
 3 ^& 4    :: P2
  • To construct a point from a vector v, use origin .+^ v.
  • To convert a point p into the vector from the origin to p, use p .-. origin.
  • To convert a point back into a pair of coordinates, use unp2, or coords (from Diagrams.Coordinates). It's common to use these in conjunction with the ViewPatterns extension:
 foo (unp2 -> (x,y)) = ...
 foo (coords -> x :& y) = ...

p2 :: (Double, Double) -> P2Source

Construct a 2D point from a pair of coordinates. See also ^&.

mkP2 :: Double -> Double -> P2Source

Curried form of p2.

unp2 :: P2 -> (Double, Double)Source

Convert a 2D point back into a pair of coordinates. See also coords.

type T2 = Transformation R2Source

Transformations in R^2.

Angles

data Angle Source

Angles can be expressed in a variety of units. Internally, they are represented in radians.

rad :: Iso' Angle DoubleSource

The radian measure of an Angle a can be accessed as a ^. rad. A new Angle can be defined in radians as pi @@ rad.

turn :: Iso' Angle DoubleSource

The measure of an Angle a in full circles can be accessed as a ^. turn. A new Angle of one-half circle can be defined in as 1/2 @@ turn.

deg :: Iso' Angle DoubleSource

The degree measure of an Angle a can be accessed as a ^. deg. A new Angle can be defined in degrees as 180 @@ deg.

fullTurn :: AngleSource

An angle representing one full turn.

fullCircle :: AngleSource

Deprecated synonym for fullTurn, retained for backwards compatibility.

angleRatio :: Angle -> Angle -> DoubleSource

Calculate ratio between two angles.

(@@) :: b -> Iso' a b -> aSource

30 @@ deg is an Angle of the given measure and units.

More generally, @@ reverses the Iso' on its right, and applies the Iso' to the value on the left. Angles are the motivating example where this order improves readability.