map ((+) 1) (2,3) == (3,4)map2 (*) (2,4) (3,2) == (6,8)foldl (+) 0 (2,4) == 6foldr (-) 0 (1,12) == -11v + w
add (1,2) (4,5) == (5,7)v - w
sub (3,1) (-3,8) == (6,-7)-v
negate (2,-4) == (-2,4)a*v
scale 3 (2,3) = (6,9)v/a
divideBy 4 (12,16) == (3,4)v dot w
The dot product of two vectors. Also called scalar product or inner product.
It links the length and angle of two vectors.
v dot w = |v|*|w|*cos(phi)
dot (1,2) (3,2) == 1*3 + 2*2 == 7The length of a vector. Also known as magnitude or norm.
|v| = sqrt(v dot v)
length (3,4) == sqrt(3^2+4^2) == 5The squared length. This is cheaper to calculate, so if you only need to compare lengths you can use this instead of the length.
|v|^2 = v dot w
lengthSquared (3,4) == 3^2+4^2 == 25Normalizes a vector. This will give you a unit vector (e.g. with length 1) in the same direction as v.
v/|v|
normalize (3,4) == (3/5,4/5)A unit vector pointing from v to w
(w - v)/|w - v|
directionFromTo (5,1) (8,5) == (3/5,4/5)Calculates the distance from v to w.
|v - w| = |w - v|
distance (3,0) (0,4) == 5The squared distance. This is slightly faster.
|v - w|^2
distanceSquared (3,0) (0,4) == 25The angle between two vectors. The angle is in radians.
acos((v dot w)/(|v|*|w|))
angle (1,0) (2,2) == pi/4 -- or 45°The projection of v onto w.
(v dot w)/|w| * w/|w|
project (2,1) (4,0) == (2,0)The rejection of v onto w. This is always perpendicular to the projection.
v - (project v w)
reject (2,1) (4,0) == (0,1)