Copyright | (c) Conal Elliott and Andy J Gill 2008 |
---|---|
License | BSD3 |
Maintainer | conal@conal.net, andygill@ku.edu |
Stability | experimental |
Safe Haskell | Safe-Inferred |
Language | Haskell98 |
Vector spaces
This version uses associated types instead of fundeps and requires ghc-6.10 or later
Synopsis
- module Data.AdditiveGroup
- class AdditiveGroup v => VectorSpace v where
- (^/) :: ( VectorSpace v, s ~ Scalar v, Fractional s) => v -> s -> v
- (^*) :: ( VectorSpace v, s ~ Scalar v) => v -> s -> v
- class ( VectorSpace v, AdditiveGroup ( Scalar v)) => InnerSpace v where
- lerp :: VectorSpace v => v -> v -> Scalar v -> v
- linearCombo :: VectorSpace v => [(v, Scalar v)] -> v
- magnitudeSq :: ( InnerSpace v, s ~ Scalar v) => v -> s
- magnitude :: ( InnerSpace v, s ~ Scalar v, Floating s) => v -> s
- normalized :: ( InnerSpace v, s ~ Scalar v, Floating s) => v -> v
- project :: ( InnerSpace v, s ~ Scalar v, Fractional s) => v -> v -> v
Documentation
module Data.AdditiveGroup
class AdditiveGroup v => VectorSpace v where Source #
Vector space
v
.
Nothing
Instances
(^/) :: ( VectorSpace v, s ~ Scalar v, Fractional s) => v -> s -> v infixr 7 Source #
Vector divided by scalar
(^*) :: ( VectorSpace v, s ~ Scalar v) => v -> s -> v infixl 7 Source #
Vector multiplied by scalar
class ( VectorSpace v, AdditiveGroup ( Scalar v)) => InnerSpace v where Source #
Adds inner (dot) products.
Nothing
Instances
lerp :: VectorSpace v => v -> v -> Scalar v -> v Source #
Linear interpolation between
a
(when
t==0
) and
b
(when
t==1
).
linearCombo :: VectorSpace v => [(v, Scalar v)] -> v Source #
Linear combination of vectors
magnitudeSq :: ( InnerSpace v, s ~ Scalar v) => v -> s Source #
Square of the length of a vector. Sometimes useful for efficiency.
See also
magnitude
.
magnitude :: ( InnerSpace v, s ~ Scalar v, Floating s) => v -> s Source #
Length of a vector. See also
magnitudeSq
.
normalized :: ( InnerSpace v, s ~ Scalar v, Floating s) => v -> v Source #
Vector in same direction as given one but with length of one. If given the zero vector, then return it.
project :: ( InnerSpace v, s ~ Scalar v, Fractional s) => v -> v -> v Source #
project u v
computes the projection of
v
onto
u
.