a collection of links and notes.
soon to be updated as i progress with the software implementation sph-ga.
youtube
in conformal geometric algebra (cga), a point in euclidean space is represented as a null vector in a higher-dimensional space. specifically, for an n-dimensional euclidean space, cga embeds this space into an (n + 2)-dimensional space with a signature (n + 1, 1). the point p with coordinates (x1, x2, ..., xn) is represented as:
p = x1 * e1 + x2 * e2 + ... + xn * en + e0 + 0.5 * (x1 ** 2 + x2 ** 2 + ... + xn ** 2) * e∞
where 'e1, e2, ..., en' are the basis vectors corresponding to the original euclidean space. e0 and e∞ are additional basis vectors with specific properties to facilitate the embedding, introduced to handle infinity and origin, and operations like translation, rotation, dilation, and reflection. e0 is often associated with the origin in the extended space. e∞ represents the "point at infinity," enabling the conformal model to handle infinite points, essential for representing directions and ideal points.
the null vector condition is given by:
dot_product(p, p) = 0
this condition ensures that the representation is a null vector in the conformal space, preserving the geometric properties of the original euclidean point.
rotor = e ** (-axis_orthogonal_plane * angle / 2)
where axis_orthogonal_plane is a unit bivector.
without exponentiation, the rotor can be constructed using the trigonometric functions that define the exponential form.
rotor = cos(angle / 2) + bivector * sin(angle / 2)
rotor = 1 + 1 / 2 * translation_vector * e∞
rotor = e ** (-axis * angle / 2) * (1 + 1 / 2 * translation_vector * e∞)
described in computing perspective projections in 3-dimensions using rotors in the homogeneous and conformal models of clifford algebra.
step 1: reflection
e ** ((angle / 2) * n * e4) = cos(angle / 2) + sin(angle / 2) * n * e4
step 2: inversion
e ** ((1 / (2 * d)) * n * e0) = exterior_product(1 + (1 / (2 * d) * n, e0))
result = rotor * point * reverse(rotor)