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

Copyright (c) Conal Elliott and Andy J Gill 2008 BSD3 conal@conal.net, andygill@ku.edu experimental Safe Haskell98

Data.AffineSpace

Description

Affine spaces.

Synopsis

# Documentation

class AdditiveGroup (Diff p) => AffineSpace p where #

Minimal complete definition

Associated Types

type Diff p #

Associated vector space

Methods

(.-.) :: p -> p -> Diff p infix 6 #

Subtract points

(.+^) :: p -> Diff p -> p infixl 6 #

Point plus vector

Instances

 # Associated Typestype Diff Double :: * # Methods # Associated Typestype Diff Float :: * # Methods # Associated Typestype Diff Int :: * # Methods(.-.) :: Int -> Int -> Diff Int #(.+^) :: Int -> Diff Int -> Int # # Associated Typestype Diff Integer :: * # Methods # Associated Typestype Diff CSChar :: * # Methods # Associated Typestype Diff CShort :: * # Methods # Associated Typestype Diff CInt :: * # Methods(.-.) :: CInt -> CInt -> Diff CInt #(.+^) :: CInt -> Diff CInt -> CInt # # Associated Typestype Diff CLong :: * # Methods # Associated Typestype Diff CLLong :: * # Methods # Associated Typestype Diff CFloat :: * # Methods # Associated Typestype Diff CDouble :: * # Methods # Associated Typestype Diff CIntMax :: * # Methods Integral a => AffineSpace (Ratio a) # Associated Typestype Diff (Ratio a) :: * # Methods(.-.) :: Ratio a -> Ratio a -> Diff (Ratio a) #(.+^) :: Ratio a -> Diff (Ratio a) -> Ratio a # AffineSpace p => AffineSpace (a -> p) # Associated Typestype Diff (a -> p) :: * # Methods(.-.) :: (a -> p) -> (a -> p) -> Diff (a -> p) #(.+^) :: (a -> p) -> Diff (a -> p) -> a -> p # (AffineSpace p, AffineSpace q) => AffineSpace (p, q) # Associated Typestype Diff (p, q) :: * # Methods(.-.) :: (p, q) -> (p, q) -> Diff (p, q) #(.+^) :: (p, q) -> Diff (p, q) -> (p, q) # (AffineSpace p, AffineSpace q, AffineSpace r) => AffineSpace (p, q, r) # Associated Typestype Diff (p, q, r) :: * # Methods(.-.) :: (p, q, r) -> (p, q, r) -> Diff (p, q, r) #(.+^) :: (p, q, r) -> Diff (p, q, r) -> (p, q, r) #

(.-^) :: AffineSpace p => p -> Diff p -> p infixl 6 #

Point minus vector

distanceSq :: (AffineSpace p, v ~ Diff p, InnerSpace v) => p -> p -> Scalar v #

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 -> s #

Distance between two points. See also distanceSq.

alerp :: (AffineSpace p, VectorSpace (Diff p)) => p -> p -> Scalar (Diff p) -> p #

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)] -> p #

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