Learn · 4 of 6
Geometric Primitives
Constructing lines, circles, planes and spheres by spanning points with the outer product, and the projection and meet operators.
Points are the basic primitive in CGA; everything else is built from them by spanning with the outer product. Given conformal points, their outer product
is a primitive whose type depends on how many points were used and whether the point at infinity is among them.
The constructions
Line — two points on it, plus the point at infinity:
Circle — any three distinct points on its orbit:
Plane — three points and the point at infinity:
Sphere — four points:
The pattern is worth stating plainly: a circle and a line are the same construction, differing only in whether one of the spanning points is at infinity. A line is a circle through infinity, and a plane is a sphere through infinity. Curved and flat objects are not separate cases in this algebra — they are the same objects with different points.
Primitives are single-grade objects, and each occupies only a sparse subset of the 32 basis blades. Transformations, by contrast, are mixed-grade.
Operators
Because primitives are elements of the algebra, they can appear in algebraic expressions that stay geometrically meaningful.
Projection
Projecting a point onto any primitive uses one formula:
The same expression projects onto a line, a plane, a circle or a sphere. There is no separate point-to-line and point-to-plane routine.
The meet
Intersections come from the meet operator:
This is where the uniformity pays off most visibly, because no edge cases are required. Take a line meeting a sphere. There are three geometric situations, and the result encodes which one occurred:
- the line intersects the sphere — is a point pair;
- the line is tangent to it — is a single point;
- they are disjoint — is an imaginary point, carrying information related to the distance between the objects.
Nothing in the computation branched. The same holds for a line and a circle: there is no need to test in advance whether it crosses twice, touches, or misses. The meet returns a meaningful primitive in every case, and the kind of answer tells you the configuration.
This is a concrete example of a general theme. In a conventional formulation the special cases live in the code as conditionals, and each one is a place where a controller can fail or a derivative can be undefined. Here they live in the algebra.
Reflections
Primitives can also be used directly as operators. Reflecting in a primitive produces rigid motions: two successive reflections in intersecting planes give a rotation, and in parallel planes give a translation. This is the geometric picture behind the transformations of the next page.
Next: transformations — rotors, translators, dilators and motors.