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

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

Instances

 Eq R2 Fractional R2 Num R2 Ord R2 Read R2 Show R2 Typeable R2 Transformable R2 Wrapped R2 Lens wrapped isomorphisms for R2. HasBasis R2 VectorSpace R2 InnerSpace R2 AdditiveGroup R2 HasY P2 HasY R2 HasX P2 HasX R2 Coordinates R2 Rewrapped R2 R2 Traced (FixedSegment R2) Traced (Trail R2) Traced (Path R2) Traced (Segment Closed R2) Renderable (Path R2) b => TrailLike (QDiagram b R2 Any)

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.

Transformations in R^2.

Angles

data Angle Source

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

Instances

 Enum Angle Eq Angle Ord Angle Read Angle Show Angle VectorSpace Angle AdditiveGroup Angle

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

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.

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

An angle representing one full turn.

Deprecated synonym for fullTurn, retained for backwards compatibility.

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.