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

Safe HaskellNone




Two-dimensional vectors.


Special 2D vectors

unitX :: R2Source

The unit vector in the positive X direction.

unitY :: R2Source

The unit vector in the positive Y direction.

unit_X :: R2Source

The unit vector in the negative X direction.

unit_Y :: R2Source

The unit vector in the negative Y direction.

Converting between vectors and angles

direction :: Angle a => R2 -> aSource

Compute the direction of a vector, measured counterclockwise from the positive x-axis as a fraction of a full turn. The zero vector is arbitrarily assigned the direction 0.

angleBetween :: (Angle a, Num a, Ord a) => R2 -> R2 -> aSource

Compute the counterclockwise angle from the first vector to the second.

fromDirection :: Angle a => a -> R2Source

Convert an angle into a unit vector pointing in that direction.

e :: Angle a => a -> R2Source

A convenient synonym for fromDirection.

2D vector utilities

perp :: R2 -> R2Source

perp v is perpendicular to and has the same magnitude as v. In particular perp v == rotateBy (1/4) v.

leftTurn :: R2 -> R2 -> BoolSource

leftTurn v1 v2 tests whether the direction of v2 is a left turn from v1 (that is, if the direction of v2 can be obtained from that of v1 by adding an angle 0 <= theta <= tau/2).