Maintainer | diagrams-discuss@googlegroups.com |
---|---|

Safe Haskell | Safe-Infered |

# Alignable class

Class of things which can be aligned.

alignBy :: V a -> Scalar (V a) -> a -> aSource

`alignBy v d a`

moves the origin of `a`

along the vector
`v`

. If `d = 1`

, the origin is moved to the edge of the
envelope in the direction of `v`

; if `d = -1`

, it moves to the
edge of the envelope in the direction of the negation of `v`

.
Other values of `d`

interpolate linearly (so for example, ```
d =
0
```

centers the origin along the direction of `v`

).

(Enveloped b, HasOrigin b) => Alignable [b] | |

Alignable a => Alignable (Active a) | |

(Enveloped b, HasOrigin b, Ord b) => Alignable (Set b) | |

(InnerSpace v, OrderedField (Scalar v)) => Alignable (Envelope v) | |

(InnerSpace v, OrderedField (Scalar v)) => Alignable (Path v) | |

(Enveloped b, HasOrigin b) => Alignable (Map k b) | |

(HasLinearMap v, InnerSpace v, OrderedField (Scalar v), Monoid' m) => Alignable (QDiagram b v m) |

alignByDefault :: (HasOrigin a, Enveloped a, Num (Scalar (V a))) => V a -> Scalar (V a) -> a -> aSource

# General alignment functions

align :: (Alignable a, Num (Scalar (V a))) => V a -> a -> aSource

`align v`

aligns an enveloped object along the edge in the
direction of `v`

. That is, it moves the local origin in the
direction of `v`

until it is on the edge of the envelope. (Note
that if the local origin is outside the envelope to begin with,
it may have to move "backwards".)