Safe Haskell | Safe |
---|---|
Language | Haskell2010 |
Documentation
Three-dimensional vector, with an associated matrix type.
Origin point (0, 0, 0)
.
fromXYZ :: (Double, Double, Double) -> v Source #
Construct a new vector from components.
toXYZ :: v -> (Double, Double, Double) Source #
Deconstruct a vector into components.
zipWith :: (Double -> Double -> Double) -> v -> v -> v Source #
Zip two vectors elementwise.
Add two vectors.
Subtract two vectors.
Cross product.
(.^) :: v -> Double -> v Source #
Scale a vector.
(.*) :: v -> v -> Double Source #
Dot product.
Euclidean norm of a vector.
Produce unit vector with the same direction as the original one.
distance :: v -> v -> Double Source #
Distance between two points.
Invert the direction of a vector.
fromRows :: (v, v, v) -> Matrix v Source #
Construct a new matrix from rows.
toRows :: Matrix v -> (v, v, v) Source #
Deconstruct a matrix into rows.
dotM :: v -> v -> Matrix v -> Double Source #
Generic vector dot product.
Multiply the transpose of the first vector by the given matrix, then multiply the result by the second vector.
[ a11 a12 a13 ] [ v2x ] [ ] [ ] [ v1x v1y v1z ] . [ a21 a22 a23 ] . [ v2y ] = s [ ] [ ] [ a31 a32 a33 ] [ v2z ]
mxv :: Matrix v -> v -> v Source #
Multiply a matrix and a vector.
[ a11 a12 a13 ] [ v2x ] [ rx ] [ ] [ ] [ ] [ a21 a22 a23 ] . [ v2y ] = [ ry ] [ ] [ ] [ ] [ a31 a32 a33 ] [ v2z ] [ rz ]
diag :: Double -> Matrix v Source #
Build a diagonal matrix from a number d
.
[ d 0 0 ] [ ] [ 0 d 0 ] [ ] [ 0 0 d ]
vxv :: v -> v -> Matrix v Source #
Transpose a vector and multiply it by another vector, producing a matrix.
[ v1x ] [ r11 r12 r13 ] [ ] [ ] [ v1y ] . [ v2x v2y v2z ] = [ r21 r22 r23 ] [ ] [ ] [ v1z ] [ r31 r32 r33 ]
addM :: Matrix v -> Matrix v -> Matrix v Source #
Add two matrices.