Copyright | (c) 2013 diagrams-lib team (see LICENSE) |
---|---|

License | BSD-style (see LICENSE) |

Maintainer | diagrams-discuss@googlegroups.com |

Safe Haskell | None |

Language | Haskell2010 |

Type for representing angles.

- data Angle n
- (@@) :: b -> AReview a b -> a
- rad :: Iso' (Angle n) n
- turn :: Floating n => Iso' (Angle n) n
- deg :: Floating n => Iso' (Angle n) n
- fullTurn :: Floating v => Angle v
- halfTurn :: Floating v => Angle v
- quarterTurn :: Floating v => Angle v
- sinA :: Floating n => Angle n -> n
- cosA :: Floating n => Angle n -> n
- tanA :: Floating n => Angle n -> n
- asinA :: Floating n => n -> Angle n
- acosA :: Floating n => n -> Angle n
- atanA :: Floating n => n -> Angle n
- atan2A :: RealFloat n => n -> n -> Angle n
- atan2A' :: OrderedField n => n -> n -> Angle n
- angleBetween :: (Metric v, Floating n) => v n -> v n -> Angle n
- angleRatio :: Floating n => Angle n -> Angle n -> n
- normalizeAngle :: (Floating n, Real n) => Angle n -> Angle n
- class HasTheta t where
- class HasTheta t => HasPhi t where

# Angle type

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

## Using angles

(@@) :: b -> AReview a b -> a infixl 5 Source

`30 @@ deg`

is an `Angle`

of the given measure and units.

`>>>`

3.141592653589793 @@ rad`pi @@ rad`

`>>>`

6.283185307179586 @@ rad`1 @@ turn`

`>>>`

0.5235987755982988 @@ rad`30 @@ deg`

For `Iso'`

s, (`@@`

) 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.

This is the same as a flipped `review`

.

(`@@`

) :: a ->`Iso'`

s a -> s (`@@`

) :: a ->`Prism'`

s a -> s (`@@`

) :: a ->`Review`

s a -> s (`@@`

) :: a ->`Equality'`

s a -> s

## Common angles

quarterTurn :: Floating v => Angle v Source

An angle representing a quarter turn.

## Trigonometric functions

atan2A :: RealFloat n => n -> n -> Angle n Source

`atan2A y x`

is the angle between the positive x-axis and the vector given
by the coordinates (x, y). The `Angle`

returned is in the [-pi,pi] range.

atan2A' :: OrderedField n => n -> n -> Angle n Source

## Angle utilities

angleBetween :: (Metric v, Floating n) => v n -> v n -> Angle n Source

Compute the positive angle between the two vectors in their common plane. Returns NaN if either of the vectors are zero.

angleRatio :: Floating n => Angle n -> Angle n -> n Source

Calculate ratio between two angles.

normalizeAngle :: (Floating n, Real n) => Angle n -> Angle n Source

Normalize an angle so that it lies in the [0,tau) range.

## Classes

The class of types with at least one angle coordinate, called `_theta`

.

Nothing