a collection of links and some notes. the equations are not validated and might contain errors.
with currently available material, understanding of the following concepts and terms tends to be assumed: abstract algebra, algebra, bilinearity, codirectionality, coefficient, colinearity, commutativity, coordinate free, covector, dual, eigenbasis, eigenvalue, euclidean geometry, equidistant, field, homogeneous space, ideal number, linear algebra, linear algebra minor, linear dependence, mathematical closure, matrix, matrix determinant, matrix multiplication, metric, metric signature, metric space, orthogonal, orthonormal, parametric equation, parity of a permutation, permutation, projection, real numbers, scalar, subspace, tensor, tensor product, vector algebra, vector basis, vector cross product, vector dot product, vector spaces, vectors
k-vector
multivector
geometric product
op :: k-vector k-vector -> scalar k-vector
perpendicularity and parallelness lead to zeros for either the defining inner product or outer product part is inner product if parallel. is outer product if perpendicular
gp(a, a): outer product part equals zero
gp(a, b) = ip(a, b) + op(a, b) gp(a, b) = ip(b, a) - op(b, a) ip(a, b) = gp(1/2, gp(a, b) + gp(b, a)) = ip(b, a) op(a, b) = gp(1/2, gp(a, b) - gp(b, a)) = -op(b, a) gp(a, b) = -gp(b, a) + gp(2, ip(a, b)) gp(b, a) = gp(a, b) - gp(2, op(a, b)) gp(a, a) = norm(a) ** 2 gp(scalar-x, scalar-y) = scalar-x * scalar-y gp(a, a) = ip(a, a) = scalar gp(a, gp(b, c)) = gp(gp(a, b), c)
orthonormal unit vectors: e1, e2
gp(e1, e1) = 0 + ip(e1, e1) = 1 gp(e1, e2) = op(e1, e2) + 0
op :: k-vector k-vector -> k-vector
associativity, distributivity/linearity, antisymmetry, scalar operation, commutativity not required
x, y: scalar
norm(op(a, b)) = norm(a) * norm(b) * sin(angle(a, b)) op(a, b) = -op(b, a) op(a, a) = -op(a, a) = 0 op(x, y) = x * y op(x, a) = op(a, x) = x * a op(x + y, c) = op(x, c) + op(y, c) op(a, op(b, c)) = op(op(a, b), c) op(a, x * b + y * c) = x * op(a, b) + y * op(a, c)
colinear: op(a, b) = 0 coplanar: op(a, b, c) = 0
op(a, b) = op(a1 * e1 + a2 * e2 + a3 * e3, b1 * e1 + b2 * e2 + b3 * e3) = (a1 * b2 - a2 * b1) * op(e1, e2) + (a2 * b3 - a3 * b2) * op(e2, e3) + (a3 * b1 - a1 * b3) * op(e3, e1)
ip :: k-vector k-vector -> (k - 1)-vector/scalar
ip(a, b) = norm(a) * norm(b) * cos(angle) ip(a, b) = sum(a1 * b1, ..., an * bn) sqrt(ip(a, a)) = norm(a) ip((0, 1), (1, 0)) = 0 ip((0, 20), (3, 0)) = 0 projection(a, b) = ip(a, b) / norm(b) angle = arccos(ip(a, b) / ip(norm(a), norm(b))) norm(a) * norm(b) * (cos(pi/2) = 0) = 0 ip(a, b) = multiply(projection(a, b), norm(b))
pseudoscalar: i
i = op(e1, ..., edim) gp(i, i) = -1 dual(a) = gp(a, i)
in r3
i = e1e2e3 = op(e1, e2, e3) gp(e1, e1e2e3) = e2e3 gp(e1, e2) = gp(i, e3) gp(e2, e3) = gp(i, e1) gp(e3, e1) = gp(i, e2) gp(i, i) = e1e2e3e1e2e3 = e1e2e1e2 = -1 gp(i, op(e1, e2)) = gp(i, op(e1, e2, e3, e3)) = gp(i, i, e3) = -e3
in odd dimensional space: gp(i, a) = gp(a, i)
2 ** dimensions
d: dimensions, g: grade
d! / (d - g)! / g!
ip(no, no) = 0 ip(ni, ni) = 0 ip(no, ni) = -1 ip(ni, no) = -1 ip(p, p) = 0 ip(p / ip(-inf, p), q / ip(-inf, q)) = -1/2 square(distance(P, Q)) pt(p) = no, p, 1/2 * p * p * ni)
multiple vectors can describe shapes. the vectors can be imagined as being chained, with each going into a different dimension. because of associativity, different combinations of sides can describe the same shape
any set of objects satisfying the following: scalar multiplication, vector addition and null object defined. a vector space seems to define the size/dimensionality of vectors, the type for values and the possible values
the direction of the vectors is perpendicular to each other so they point in separate directions like axis
let c and d be vectors with tails at an origin. let e be a vector with its tail at the head of c meeting d at a right angle. e is the rejection. a vector from the tail of d to the head of of e is the projection
start with two vectors, introduce a third vector to complete a right triangle. if the first two vectors are not perpendicular, the triangle has two catheti, with the one lying on the second vector being the projection, and the third vector being the rejection
projection(a, b) = ip(a, b) / norm(b) rejection(a, b) = a - projection(a, b)
elements are often written as multiples of a unit/basis vector, which can be for example a vector that goes 1 into a distinct direction. base vectors represent directions
a * e1 + b * e2 + c * e3 == [a * e1, b * e2, c * e3] == [a, b, c]
calculated using multiplication from elementary arithmetic
(x ** 2 + y ** 2 + z ** 2) // 2
gp(e1, e1) = 1 gp(op(e1, e2), op(e1, e2)) = -1 gp(a, a) = gp(norm(a), norm(a)) gp(a, a) / gp(norm(a), norm(a)) = 1 gp(a / gp(norm(a), norm(a)), a) = 1 inv(a) = a / gp(norm(a), norm(a)) inv(a) = a / gp(norm(a), norm(a)) = a / ip(a, a) inverse is either shorter or longer if norm(a) > 1 then inverse is shorter if norm(a) < 1 then inverse is longer if norm(a) = 1 then inverse the same par(a, b) -> gp(a, b) = gp(b, a) -> commutes perp(a, b) -> gp(a, b) = -gp(b, a) -> anticommutes gp(a, b) = ip(a, b) + op(a, b) gp(b, a) = ip(b, a) + op(b, a) gp(b, a) = ip(a, b) - op(a, b) gp(a, b) + gp(b, a) = gp(2, ip(a, b)) ip(a, b) = gp(1/2, gp(a, b) + gp(b, a)) gp(a, b) - gp(b, a) = gp(2, op(a, b)) op(a, b) = gp(1/2, gp(a, b) - gp(b, a)) a = par(a) + perp(a) perp(a) = a - par(a) gp(a, b) = gp(par(a), b) + gp(perp(a), b) gp(a, b) = gp(par(a), b) - gp(b, perp(a)) gp(a, b) = gp(par(a), b) - gp(b, a - par(a)) gp(a, b) = gp(par(a), b) - gp(b, a) + gp(b, par(a)) gp(a, b) = gp(par(a), b) - gp(b, a) + gp(par(a), b) gp(a, b) + gp(b, a) = gp(2, par(a), b) gp(1/2, gp(a, b) + gp(b, a)) = gp(par(a), b) ip(a, b) = gp(par(a), b) gp(ip(a, b), inv(b)) = gp(par(a), b, inv(b)) par(a) = gp(ip(a, b), inv(b)) par(a) = ip(a, b) / ip(b, b) * b if norm(a) = 1 then inv(a) = a par(a) = gp(ip(a, b), inv(b)) perp(a) = gp(op(a, b), inv(b))
a = par(a) + perp(a) ref(a) = par(a) - perp(a) b ref(a) = b par(a) - b perp(a) b ref(a) = par(a) b + perp(a) b b ref(a) = (par(a) + perp(a)) b b ref(a) = a b inv(b) b ref(a) = inv(b) a b ref(a) = inv(b) a b