General function applicable to all vector types.
Documentation
All vector types belong to this class. Aside from vpack
and vunpack
, these methods aren't especially useful to end-users; they're used internally by the vector arithmetic implementations.
vmap :: (Scalar -> Scalar) -> v -> vSource
Apply a function to all vector fields.
vzip :: (Scalar -> Scalar -> Scalar) -> v -> v -> vSource
Zip two vectors together field-by-field using the supplied function (in the style of Data.List.zipWith
).
vfold :: (Scalar -> Scalar -> Scalar) -> v -> ScalarSource
Reduce a vector down to a single value using the supplied binary operator. The ordering in which this happens isn't guaranteed, so the operator should probably be associative and commutative.
vpack :: [Scalar] -> Maybe vSource
Pack a list of values into a vector. Extra values are ignored, too few values yields Nothing
.
vunpack :: v -> [Scalar]Source
Unpack a vector into a list of values. (Always succeeds.)
(*|) :: Vector v => Scalar -> v -> vSource
Scale a vector (i.e., change its length but not its direction). This operator has the same precedence as the usual (*)
operator.
The (*|)
and (|*)
operators are identical, but with their argument flipped. Just remember that the '|
' denotes the scalar part.
(|*) :: Vector v => v -> Scalar -> vSource
Scale a vector (i.e., change its length but not its direction). This operator has the same precedence as the usual (*)
operator.
The (*|)
and (|*)
operators are identical, but with their argument flipped. Just remember that the '|
' denotes the scalar part.
vdot :: Vector v => v -> v -> ScalarSource
Take the dot product of two vectors. This is a scalar equal to the cosine of the angle between the two vectors multiplied by the length of each vectors.
vmag :: Vector v => v -> ScalarSource
Return the length or magnitude of a vector. (Note that this involves a slow square root operation.)
vnormalise :: Vector v => v -> vSource
Normalise a vector. In order words, return a new vector with the same direction, but a length of exactly one. (If the vector's length is zero or very near to zero, the vector is returned unchanged.)