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

Maintainer diagrams-discuss@googlegroups.com None

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. `Angle`s are the motivating example where this order improves readability.