| Stability | experimental |
|---|---|
| Maintainer | conal@conal.net, andygill@ku.edu |
| Safe Haskell | None |
Data.AffineSpace
Description
Affine spaces.
- class AdditiveGroup (Diff p) => AffineSpace p where
- (.-^) :: AffineSpace p => p -> Diff p -> p
- distanceSq :: (AffineSpace p, v ~ Diff p, InnerSpace v) => p -> p -> Scalar v
- distance :: (AffineSpace p, v ~ Diff p, InnerSpace v, s ~ Scalar v, Floating (Scalar v)) => p -> p -> s
- alerp :: (AffineSpace p, VectorSpace (Diff p)) => p -> p -> Scalar (Diff p) -> p
- affineCombo :: (AffineSpace p, v ~ Diff p, VectorSpace v) => p -> [(p, Scalar v)] -> p
Documentation
class AdditiveGroup (Diff p) => AffineSpace p whereSource
Methods
(.-.) :: p -> p -> Diff pSource
Subtract points
(.+^) :: p -> Diff p -> pSource
Point plus vector
Instances
| AffineSpace Double | |
| AffineSpace Float | |
| AffineSpace CFloat | |
| AffineSpace CDouble | |
| Integral a => AffineSpace (Ratio a) | |
| AffineSpace p => AffineSpace (a -> p) | |
| (AffineSpace p, AffineSpace q) => AffineSpace (p, q) | |
| (AffineSpace p, AffineSpace q, AffineSpace r) => AffineSpace (p, q, r) |
(.-^) :: AffineSpace p => p -> Diff p -> pSource
Point minus vector
distanceSq :: (AffineSpace p, v ~ Diff p, InnerSpace v) => p -> p -> Scalar vSource
Square of the distance between two points. Sometimes useful for
efficiency. See also distance.
distance :: (AffineSpace p, v ~ Diff p, InnerSpace v, s ~ Scalar v, Floating (Scalar v)) => p -> p -> sSource
Distance between two points. See also distanceSq.
alerp :: (AffineSpace p, VectorSpace (Diff p)) => p -> p -> Scalar (Diff p) -> pSource
Affine linear interpolation. Varies from p to p' as s varies
from 0 to 1. See also lerp (on vector spaces).
affineCombo :: (AffineSpace p, v ~ Diff p, VectorSpace v) => p -> [(p, Scalar v)] -> pSource
Compute an affine combination (weighted average) of points. The first element is used as origin and is weighted such that all coefficients sum to 1. For example,
affineCombo a [(0.3,b), (0.2,c)]
is equal to
a .+^ (0.3 *^ (b .-. a) ^+^ 0.2 *^ (c .-. a))
and if a, b, and c were in a vector space would also be equal to
0.5 *^ a ^+^ 0.3 *^ b ^+^ 0.2 *^ c
See also linearCombo (on vector spaces).