Stability | experimental |
---|---|
Maintainer | Scott N. Walck <walck@lvc.edu> |
Safe Haskell | Trustworthy |
This module defines some basic vector functionality.
It uses the same internal data representation as SimpleVec
,
but declares Vec
to be an instance of VectorSpace
.
We import zeroV
, negateV
, sumV
, ^+^
, ^-^
from AdditiveGroup
, and
*^
, ^*
, ^/
, <.>
, magnitude
from VectorSpace
.
CarrotVec
exports exactly the same symbols as SimpleVec
;
they are just defined differently.
- data Vec
- xComp :: Vec -> Double
- yComp :: Vec -> Double
- zComp :: Vec -> Double
- vec :: Double -> Double -> Double -> Vec
- (^+^) :: AdditiveGroup v => v -> v -> v
- (^-^) :: AdditiveGroup v => v -> v -> v
- (*^) :: VectorSpace v => Scalar v -> v -> v
- (^*) :: (VectorSpace v, ~ * s (Scalar v)) => v -> s -> v
- (^/) :: (VectorSpace v, ~ * s (Scalar v), Fractional s) => v -> s -> v
- (<.>) :: InnerSpace v => v -> v -> Scalar v
- (><) :: Vec -> Vec -> Vec
- magnitude :: (InnerSpace v, ~ * s (Scalar v), Floating s) => v -> s
- zeroV :: AdditiveGroup v => v
- negateV :: AdditiveGroup v => v -> v
- sumV :: (Foldable f, AdditiveGroup v) => f v -> v
- iHat :: Vec
- jHat :: Vec
- kHat :: Vec
Documentation
A type for vectors.
Form a vector by giving its x, y, and z components.
(^+^) :: AdditiveGroup v => v -> v -> v
Add vectors
(^-^) :: AdditiveGroup v => v -> v -> v
Group subtraction
(*^) :: VectorSpace v => Scalar v -> v -> v
Scale a vector
(^*) :: (VectorSpace v, ~ * s (Scalar v)) => v -> s -> v
Vector multiplied by scalar
(^/) :: (VectorSpace v, ~ * s (Scalar v), Fractional s) => v -> s -> v
Vector divided by scalar
(<.>) :: InnerSpace v => v -> v -> Scalar v
Inner/dot product
magnitude :: (InnerSpace v, ~ * s (Scalar v), Floating s) => v -> s
Length of a vector. See also magnitudeSq
.
zeroV :: AdditiveGroup v => v
The zero element: identity for '(^+^)'
negateV :: AdditiveGroup v => v -> v
Additive inverse
sumV :: (Foldable f, AdditiveGroup v) => f v -> v
Sum over several vectors