vector-space-0.8.7: Vector & affine spaces, linear maps, and derivatives

Stabilityexperimental
Maintainerconal@conal.net, andygill@ku.edu
Safe HaskellNone

Data.AffineSpace

Description

Affine spaces.

Synopsis

Documentation

class AdditiveGroup (Diff p) => AffineSpace p whereSource

Associated Types

type Diff p Source

Associated vector space

Methods

(.-.) :: p -> p -> Diff pSource

Subtract points

(.+^) :: p -> Diff p -> pSource

Point plus vector

(.-^) :: 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).