diagrams-lib-0.6.0.3: 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
```
• 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) = ...
```

Instances

 Eq R2 Fractional R2 Num R2 Ord R2 Read R2 Show R2 Typeable R2 Transformable R2 HasBasis R2 VectorSpace R2 InnerSpace R2 AdditiveGroup R2 Coordinates R2 Newtype R2 (Double, Double) Traced (FixedSegment R2) Traced (Segment R2) Traced (Path R2) Traced (Trail R2) Renderable (Path R2) b => PathLike (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`.

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 `&`.

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

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

Transformations in R^2.

# Angles

class Num a => Angle a whereSource

Type class for types that measure angles.

Methods

toCircleFrac :: a -> CircleFracSource

Convert to a fraction of a circle.

Convert from a fraction of a circle.

Instances

 Angle Deg 360 degrees = 1 full circle. Angle Rad tau radians = 1 full circle. Angle CircleFrac

newtype CircleFrac Source

Newtype wrapper used to represent angles as fractions of a circle. For example, 1/3 = tau/3 radians = 120 degrees.

Constructors

 CircleFrac FieldsgetCircleFrac :: Double

Newtype wrapper for representing angles in radians.

Constructors

Instances

newtype Deg Source

Newtype wrapper for representing angles in degrees.

Constructors

 Deg FieldsgetDeg :: Double

Instances

 Enum Deg Eq Deg Floating Deg Fractional Deg Num Deg Ord Deg Read Deg Real Deg RealFloat Deg RealFrac Deg Show Deg Angle Deg 360 degrees = 1 full circle.

fullCircle :: Angle a => aSource

An angle representing a full circle.

convertAngle :: (Angle a, Angle b) => a -> bSource

Convert between two angle representations.