Dual Approaches to Projective Geometric Algebra

Eric Lengyel   •   March 2, 2026

Projective geometric algebra, where we model simple objects and transformations in a space containing one extra dimension, is full of interesting dualities. Scalars are embedded in two ways, every operation is really a pair of operations, each geometric object has two interpretations, and every action does two things at once. A good understanding of the algebra requires that both aspects of any duality be regarded as equal and opposite. It is never the case that one side is somehow a diminished shadow of the other. It is always true that scalars and antiscalars, present dimensions and absent dimensions, products and antiproducts, bulk norms and weight norms, and many more dual pairings stand on level ground with matching importance.

There have been two approaches to projective geometric algebra (PGA) that are often called point-based and plane-based. I’m not a fan of either of these terms because I don’t think they capture the true essence of the algebra and are often misinterpreted under incorrect mathematical assumptions. However, in the absence of a better alternative, we will continue using these two terms to make the following distinction and nothing more. In point-based PGA, grade-one vectors represent points, and in plane-based PGA, grade-one vectors represent planes. That’s it. In both approaches, Euclidean isometries are built up from reflections across planes. Some people seem to think that point-based PGA implies an attempt to build up Euclidean isometries from point-invariant transformations of some kind, but that is not the case, and it never has been.

When it comes to implementation on a computer, whether we choose to make vectors points or planes ultimately does not matter. In the end, we make exactly the same calculations with exactly the same values stored in exactly the same structures. Both approaches produce identical results. However, there are significant conceptual differences that can make one approach harder to reason about than the other, and this post focuses on the two most important.

Geometric Interpretation

The first and most obvious difference between point-based and plane-based PGA is the way in which homogeneous multivectors are projected into the base space to become concrete Euclidean geometries. Both types of PGA model ordinary n-dimensional space with an exterior algebra based on an \((n + 1)\)-dimensional vector space. This exterior algebra has \(2^{n + 1}\) basis elements.

In point-based PGA, a \((k + 1)\)-vector directly represents a k-dimensional Euclidean geometry, and the geometry itself is exactly where the \((k + 1)\)-vector intersects the n-dimensional subspace where the distance into the extra projective dimension is fixed at one unit. As shown left columns in the tables below, a \((k + 1)\)-vector is projected onto the 2D subspace where \(z = 1\) in the case of two-dimensional space, and a \((k + 1)\)-vector is projected onto the 3D subspace where \(w = 1\) in the case of three-dimensional space. Because a vector projects to a point, a bivector projects to a line, and a trivector projects to a plane, each type of geometric object is algebraically described explicitly by the dimensions it occupies in space. This is consistent with concept of homogeneous coordinates that have long been used in computer graphics, and it extends the same concept to higher-dimensional geometries.

In plane-based PGA, a \((k + 1)\)-vector indirectly represents an \((n - 1 - k)\)-dimensional Euclidean geometry in an inverted manner. In this case, we obtain the geometry that a \((k + 1)\)-vector v represents by taking the orthogonal complement of v, which is an \((n - k)\)-vector, and projecting that orthogonal complement into the n-dimensional subspace where the distance into the extra projective dimension is fixed at one unit. That is, we don’t project v directly, but we instead take everything perpendicular to v and project that to get the geometry that v represents. This is shown in the right columns of the tables below, where the multivectors drawn in red are orthogonal to the multivectors drawn in blue. For \(n = 3\), a vector projects to plane, a bivector projects to a line, and a trivector projects to a point. This means that a geometric object is algebraically described implicitly by the dimensions it does not occupy in space.

These two geometric interpretations arise from an innate duality that exists throughout PGA. When we name a basis element in the exterior algebra using a symbol such as \(\mathbf e_1\) or \(\mathbf e_{23}\), the subscripts identify a list of the directions in space that we are talking about. The directions that do not appear in the subscripts simultaneously identify another list of directions in space that are precisely the complement of the first list. We can choose to interpret either one of these lists as the directions spanning the subspace occupied by a geometry, and then the other list automatically becomes the set of directions that are not occupied by the geometry. When we choose to interpret the directions directly named by the subscripts as occupied dimensions, we get point-based PGA. When we choose to interpret the directions missing from the list of subscripts as occupied dimensions, we get plane-based PGA. Either way, we get the same results, and they are both equally valid from a purely algebraic point of view. However, from the conceptual point of view illustrated in the tables below, one of these interpretations is obviously more intuitive while the other requires some extra mental gymnastics.

Point-Based Geometric Algebra Plane-Based Geometric Algebra
A 2D point is represented by the 3D homogeneous vector \(\mathbf{v} = v_{x}\mathbf e_{1} + v_{y}\mathbf e_{2} + v_{z}\mathbf e_{3}\). A 2D point is represented by the 3D homogeneous bivector \(\mathbf{b} = b_{x}\mathbf e_{23} + b_{y}\mathbf e_{31} + b_{z}\mathbf e_{12}\).

The Euclidean point p corresponding to a 3D homogeneous vector v lies at the position where v intersects the subspace \(z = 1\).

The Euclidean point p corresponding to a 3D homogeneous bivector b lies at the position where the direction perpendicular to b intersects the subspace \(z = 1\).

A 2D line is represented by the 3D homogeneous bivector \(\mathbf b = b_{x}\mathbf e_{23} + b_{y}\mathbf e_{31} + b_{z}\mathbf e_{12}\). A 2D line is represented by the 3D homogeneous vector \(\mathbf v = v_{x}\mathbf e_{1} + v_{y}\mathbf e_{2} + v_{z}\mathbf e_{3}\).

The Euclidean line l corresponding to a 3D homogeneous bivector b contains the set of points where b intersects the subspace \(z = 1\).

The Euclidean line l corresponding to a 3D homogeneous vector v contains the set of points where all directions perpendicular to v intersect the subspace \(z = 1\).

Point-Based Geometric Algebra Plane-Based Geometric Algebra
A 3D point is represented by the 4D homogeneous vector \(\mathbf{v} = v_{x}\mathbf e_{1} + v_{y}\mathbf e_{2} + v_{z}\mathbf e_{3} + v_{w}\mathbf e_{4}\). A 3D point is represented by the 4D homogeneous trivector \(\mathbf{t} = t_{x}\mathbf e_{423} + t_{y}\mathbf e_{431} + t_{z}\mathbf e_{412} + t_{w}\mathbf e_{321}\).

The Euclidean point p corresponding to a 4D homogeneous vector v lies at the position where v intersects the subspace \(w = 1\).

The Euclidean point p corresponding to a 4D homogeneous trivector t lies at the position where the direction perpendicular to t intersects the subspace \(w = 1\).

A 3D line is represented by the 4D homogeneous bivector \(\mathbf b = b_{vx}\mathbf e_{41} + b_{vy}\mathbf e_{42} + b_{vz}\mathbf e_{43} + b_{mx}\mathbf e_{23} + b_{my}\mathbf e_{31} + b_{mz}\mathbf e_{12}\). A 3D line is represented by the 4D homogeneous bivector \(\mathbf b = b_{vx}\mathbf e_{23} + b_{vy}\mathbf e_{31} + b_{vz}\mathbf e_{12} + b_{mx}\mathbf e_{41} + b_{my}\mathbf e_{42} + b_{mz}\mathbf e_{43}\).

The Euclidean line l corresponding to a 4D homogeneous bivector b contains the set of points where b intersects the subspace \(w = 1\).

The Euclidean line l corresponding to a 4D homogeneous bivector b contains the set of points where all directions perpendicular to b intersect the subspace \(w = 1\).

A 3D plane is represented by the 4D homogeneous trivector \(\mathbf{t} = t_{x}\mathbf e_{423} + t_{y}\mathbf e_{431} + t_{z}\mathbf e_{412} + t_{w}\mathbf e_{321}\). A 3D plane is represented by the 4D homogeneous vector \(\mathbf{v} = v_{x}\mathbf e_{1} + v_{y}\mathbf e_{2} + v_{z}\mathbf e_{3} + v_{w}\mathbf e_{4}\).

The Euclidean plane g corresponding to a 4D homogeneous trivector t contains the set of points where t intersects the subspace \(w = 1\).

The Euclidean plane g corresponding to a 4D homogeneous vector v contains the set of points where all directions perpendicular to v intersect the subspace \(w = 1\).

Conventional Correspondence

The other main difference between point-based and plane-based PGA involves correspondence with conventional linear algebra. There are numerous concepts in linear algebra that carry over to point-based PGA without modification, but to bring the same concepts to plane-based PGA requires that they be altered to match the inverted geometric interpretations. For example, a 3D physical quantity such as a simple displacement or velocity continues to be represented by a vector in point-based PGA, but it must be represented by a trivector in plane-based PGA in order to be expressible as a difference between positions. When vectors are planes, it inevitably leads to common operations such as the dot product, norm, and change of basis being formulated in a backward sense. A direct comparison is made in the following table.

Due to duality, there are two distinct dot products denoted by the symbols \(\bullet\) and \(\circ\). The operation \(\bullet\) is the ordinary dot product taken from conventional linear algebra, and it continues to produce a scalar result. The operation \(\circ\) is its antiproduct, and it produces an antiscalar result in a dual manner. Each of these two products induces a norm obtained by dotting a quantity with itself and taking the square root with respect to either scalar multiplication or antiscalar multiplication. We call these the norm and antinorm, and we denote them by \(\Vert \mathbf v \Vert_\bullet\) and \(\Vert \mathbf v \Vert_\circ\), where the subscript identifies which dot product is being used.

Point-Based Geometric Algebra Plane-Based Geometric Algebra
A 3D direction in space is represented by the vector \(\mathbf{v} = v_x\mathbf e_1 + v_y\mathbf e_2 + v_z\mathbf e_3\). A 3D direction in space is represented by the trivector \(\mathbf{v} = v_x\mathbf e_{423} + v_y\mathbf e_{431} + v_z\mathbf e_{412}\).
The magnitude \(\Vert \mathbf v \Vert_{\bullet}\) of a direction v is a scalar quantity given by \(\sqrt{\mathbf v \bullet \mathbf v}\), which is the canonical norm induced by the dot product \(\bullet\). The value of \(\mathbf v \bullet \mathbf v\) is always zero. The magnitude \(\Vert \mathbf v \Vert_{\circ}\) of a direction v is an antiscalar quantity given by \(\sqrt{\mathbf v \circ \mathbf v}\), which is the norm induced by the antidot product \(\circ\).
The dot product between two directions a and b is a scalar quantity satisfying the formula \(\mathbf{a}\bullet\mathbf{b} = \Vert \mathbf{a} \Vert_{\bullet} \Vert \mathbf{b} \Vert_{\bullet} \cos \theta\), where θ is the angle between them. The value of \(\mathbf a \bullet \mathbf b\) is always zero. The antidot product between two directions a and b is an antiscalar quantity satisfying the formula \(\mathbf a \circ \mathbf b = \Vert \mathbf a \Vert_{\circ} \Vert \mathbf b \Vert_{\circ} \cos \theta\).
Given a matrix M that performs a change of basis, mapping the axis directions from one coordinate system to another, ordinary direction vectors are properly transformed with the same matrix M. All directions are now trivectors, and this includes the directions in which the coordinate axes point. A change of basis matrix M now must apply to trivectors in order to map from one coordinate system to another. This means that the vector basis is properly transformed by the adjugate transpose of M.

Here, we see that in point-based PGA, the ordinary dot product continues to function in the same way we’re accustomed to it working in conventional linear algebra. The squared norm of a vector is given by its dot product with itself, and it corresponds to its squared distance from the origin. The cosine of the angle between two vectors is given by their dot product divided by their norms. Everything is the same as it’s always been. But in plane-based PGA, we are forced to give this up. The ordinary dot product between two directions in space, which must be represented by trivectors, is always zero due to the degenerate metric. To get meaningful results, we have to replace the dot product with the antidot product and express magnitudes and angles as antiscalars instead of scalars. We still end up doing the same calculations and getting the same answers, but we have to do it with different operations and value types in the exterior algebra that are not part of the base vector space in conventional linear algebra.

In point-based PGA, the association between the norm induced by the ordinary dot product and the distance from the origin carries over to geometric objects. The dot products of a point with itself, a line with itself, and a plane with itself all give the squared distance to the origin. Except now, these distances include the homogeneous weight of the object being measured, and that weight is given by the antinorm of the object. When an object is scaled so that its weight is unity, the conventional norm gives the actual, unweighted distance to the origin. (This scaling projects a magnitude from the higher-dimensional algebra into the base space where the geometries being modeled reside.) In plane-based PGA, the roles of the two norms are reversed. In this case, the conventional norm induced by the conventional dot product no longer corresponds to the distance from the origin, but instead gives the weight. It’s the antinorm that produces the weighted distance from the origin in plane-based PGA, and that distance is given as an antiscalar quantity instead of a scalar.

In addition to correspondence with conventional linear algebra, we can talk about correspondence with concepts in vanilla, non-projective geometric algebra. Some of these are summarized in the table below. In Grassmann’s original work, his “combinatorial” product could be progressive or regressive, and those are separated into the exterior product (or wedge product) and exterior antiproduct (or antiwedge product) today, which we denote by the symbols \(\wedge\) and \(\vee\). The progressive product was given its name because it yielded a result with a grade higher than the grades of its operands, and the regressive product was given its name because it yielded a result with a grade lower than the grades of its operands. In general, one expects the progressive product to make bigger things and the regressive product to make smaller things.

In point-based PGA, the meanings of progressive and regressive naturally extend to the dimensionalities of the input geometries. The progressive product yields a geometry having greater dimensionality than its operands, and the regressive product yields a geometry having lesser dimensionality than its operands. In plane-based PGA, these relationships are reversed such that the progressive product reduces dimensionality and the regressive product enlarges dimensionality.

One more operation we can consider is the contraction product and its dual, the expansion product. The contraction product gets its name from the fact that it essentially removes one of its operands from the other, decreasing the grade of the larger operand. The expansion product works the other way by augmenting one of its operands with the other, increasing the grade of the smaller operand. In point-based PGA, these meanings are once again extended to geometries in a consistent manner, and in plane-based PGA, they are once again reversed, as described in the following table.

Point-Based Geometric Algebra Plane-Based Geometric Algebra
The progressive exterior product \(\mathbf a \wedge \mathbf b\) calculates the join of a and b, which increases the dimensionality of the input geometries by combining the subspaces they span. The progressive exterior product \(\mathbf a \wedge \mathbf b\) calculates the meet of a and b, which decreases the dimensionality of the input geometries by intersecting the subspaces they span.
The regressive exterior product \(\mathbf a \vee \mathbf b\) calculates the meet of a and b, which decreases the dimensionality of the input geometries by intersecting the subspaces they span. The regressive exterior product \(\mathbf a \vee \mathbf b\) calculates the join of a and b, which increases the dimensionality of the input geometries by combining the subspaces they span.
The contraction product \(\mathbf a \mathbin{\lfloor} \mathbf b = \mathbf a \vee \mathbf b^{\small\unicode{x2605}}\) has the effect of contracting the dimensionality of the geometry a by removing directions parallel to the geometry b. The contraction product \(\mathbf a \mathbin{\lfloor} \mathbf b = \mathbf a \vee \mathbf b^{\small\unicode{x2605}}\) has the effect of expanding the dimensionality of the geometry a by adding directions perpendicular to the geometry b.
The expansion product \(\mathbf a \wedge \mathbf b^{\small\unicode{x2606}}\) has the effect of expanding the dimensionality of the geometry a by adding directions perpendicular to the geometry b. The expansion product \(\mathbf a \wedge \mathbf b^{\small\unicode{x2606}}\) has the effect of contracting the dimensionality of the geometry a by removing directions parallel to the geometry b.

The Geometric Products

In PGA, there are two wedge products, two dot products, two norms based on those dot products, two duals, two contractions, two expansions, two reversals, and yes, two geometric products. We can no longer use juxtaposition for a geometric product because it would be ambiguous. We instead distinguish between the two possibilities with infix symbols \(\unicode{x27D1}\) and \(\unicode{x27C7}\) because the geometric products incorporate the wedge product \(\wedge\) and antiwedge product \(\vee\) and add more stuff to them. (Note that the geometric products can be built up from fundamental operations in the exterior algebra as discussed in a previous post, The Transwedge Product.)

There are a number of identities that the two geometric products satisfy in a symmetric manner relating them to other operations in PGA, such as the following for duals and dot products.

\(\mathbf u^{\small\unicode{x2605}} = \mathbf{\tilde u} \mathbin{\unicode{x27D1}} \mathbb 1\)    and    \(\mathbf u^{\small\unicode{x2606}} = \smash{\mathbf{\underset{\Large\unicode{x7E}}{u}}} \mathbin{\unicode{x27C7}} \mathbf 1\)

\(\mathbf a \bullet \mathbf b = \langle\mathbf a \mathbin{\unicode{x27D1}} \mathbf{\tilde b}\rangle_0\)    and    \(\mathbf a \circ \mathbf b = \langle\mathbf a \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{b}}}\rangle_n\)

In the four-dimensional algebra that models geometry in three-dimensional space, a motion operator, or “motor”, Q is a quantity composed of eight even-graded components. We can perform certain types of transformations on an arbitrary multivector u by forming the sandwich products \(\mathbf Q \mathbin{\unicode{x27D1}} \mathbf u \mathbin{\unicode{x27D1}} \mathbf{\tilde Q}\) and \(\mathbf Q \mathbin{\unicode{x27C7}} \mathbf u \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}}\), where the first of these uses the geometric product and the reverse, and the second uses the geometric antiproduct and the antireverse. If we apply these to an ordinary grade-one vector \(\mathbf v = (v_x, v_y, v_z, v_w)\), then we find that they are equivalent to the following matrix-vector products.

\(\mathbf Q \mathbin{\unicode{x27D1}} \mathbf v \mathbin{\unicode{x27D1}} \mathbf{\tilde Q} = \begin{bmatrix} r_{11} & r_{12} & r_{13} & 0 \\ r_{21} & r_{22} & r_{23} & 0 \\ r_{31} & r_{32} & r_{33} & 0 \\ -\tau_x & -\tau_y & -\tau_z & 1 \\ \end{bmatrix} \begin{bmatrix} v_x \\ v_y \\ v_z \\ v_w \end{bmatrix}\)

\(\mathbf Q \mathbin{\unicode{x27C7}} \mathbf v \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}} = \begin{bmatrix} r_{11} & r_{12} & r_{13} & \tau_x \\ r_{21} & r_{22} & r_{23} & \tau_y \\ r_{31} & r_{32} & r_{33} & \tau_z \\ \mskip9mu 0\mskip9mu & \mskip9mu 0\mskip9mu & \mskip9mu 0\mskip9mu & 1 \\ \end{bmatrix} \begin{bmatrix} v_x \\ v_y \\ v_z \\ v_w \end{bmatrix}\)

In both cases, the upper-left \(3 \times 3\) portion r is a rotation matrix, and the vector \(\boldsymbol \tau = (\tau_x, \tau_y, \tau_z)\) is a 3D translation. For complementary values of Q, the full \(4 \times 4\) matrices are inverse transposes of each other. (For more about the transformations performed by the two geometric products, see the post Space-Antispace Transform Correspondence in Projective Geometric Algebra.) The exact form of each motor can be expressed as an exponential involving the screw axis \(\boldsymbol l\), the rotation angle \(\phi\), and the displacement \(\delta\) as

\(\mathbf Q = \exp_{\unicode{x27D1}}\left[\frac{1}{2}(\delta \mathbb 1 + \phi \mathbf 1) \mathbin{\unicode{x27D1}} \boldsymbol l\right]\)

\(\mathbf Q = \exp_{\unicode{x27C7}}\left[\frac{1}{2}(\delta \mathbf 1 + \phi \mathbb 1) \mathbin{\unicode{x27C7}} \boldsymbol l\right]\)

where the subscript of the \(\exp\) function indicates which geometric product the exponential is evaluated with respect to. There is a very clear symmetry at work.

What’s important to realize is that when we interpret the vector v as the point corresponding to the projection of v into the 3D subspace where \(w = 1\), as we would in point-based PGA, the second matrix corresponding to the sandwich product \(\mathbf Q \mathbin{\unicode{x27C7}} \mathbf v \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}}\) transforms the point with a proper Euclidean isometry (i.e., any combination of rotations and translations). On the other hand, when we interpret the vector v as the plane corresponding to the projection of all directions perpendicular to v into the 3D subspace where \(w = 1\), as we would in plane-based PGA, the first matrix corresponding to the sandwich product \(\mathbf Q \mathbin{\unicode{x27D1}} \mathbf v \mathbin{\unicode{x27D1}} \mathbf{\tilde Q}\) transforms the plane with a proper Euclidean isometry.

In general, a sandwich product \(\mathbf Q \mathbin{\unicode{x27D1}} \mathbf u \mathbin{\unicode{x27D1}} \mathbf{\tilde Q}\) with the geometric product has the effect of performing a Euclidean isometry transformation on the projection of the subspace of directions absent from those identified by the multivector u. A sandwich product \(\mathbf Q \mathbin{\unicode{x27C7}} \mathbf v \mathbin{\unicode{x27C7}} \smash{\mathbf{\underset{\Large\unicode{x7E}}{Q}}}\) with the geometric antiproduct has the effect of performing a Euclidean isometry transformation on the projection of the subspace of directions present in those identified by the multivector u. In point-based PGA, it’s this second sandwich product with the operation \(\unicode{x27C7}\) that we’d need to use in order to implement Euclidean isometries because we represent geometries directly by the projection of the present directions. In plane-based PGA, we need to use the first sandwich product with the operation \(\unicode{x27D1}\) because we represent geometries indirectly by the projection of the absent directions. Either way, both sandwich products boil down to the exact same calculations in terms of multiplies and adds. We simply choose which of the two geometric products that we need for the geometric representations we’re using.

Discussion and Musings

Let’s summarize the two approaches to projective geometric algebra, focusing on the 4D algebra modeling geometry in 3D space.

Again, these two approaches are equally correct from an algebraic and computational perspective, and choosing either one over the other will ultimately provide the same results. But the plane-based approach comes with two major conceptual disadvantages: (1) The algebraic representations do not directly project into 3D space to construct the corresponding geometric objects. (2) Common operations in conventional linear algebra and vanilla geometric algebra do not carry over to PGA and must instead be dualized, creating a disconnect with existing codebases and generally going against established intuition. Since plane-based PGA provides absolutely no compensatory gains that could possibly justify accepting these disadvantages, I concluded years ago that using the point-based approach simply makes more practical sense.

If you’re wondering how plane-based PGA was developed in the first place, consider what would happen if you didn’t know about the geometric antiproduct \(\unicode{x27C7}\), and you only had the one product \(\unicode{x27D1}\) to work with. Since the sandwich product \(\mathbf Q \mathbin{\unicode{x27D1}} \mathbf u \mathbin{\unicode{x27D1}} \mathbf{\tilde Q}\) applies a Euclidean isometry transformation to the subspace spanned by directions absent from u, you would have no choice but to create a model in which geometries correspond to the antispace of a multivector, the directions that are not identified by the participating basis elements. This is exactly what happened before the year 2020 when the duality of PGA was not yet fully understood, and it became entrenched with some people. There have been some arguments that the product \(\unicode{x27D1}\) is easier to reason about than the product \(\unicode{x27C7}\), but they are equal and opposite duals of each other. Neither one is more or less natural than the other, neither one is more or less complex in any way, and neither one is more or less functional. The geometric product and geometric antiproduct are two sides of the same coin. Perhaps if they were called something neutral like the red product and blue product to remove any negative bias stemming from the “anti” prefix, some people would feel better about their equal status. The only reason to choose plane-based PGA over point-based PGA at this point in time would be due to a desire to avoid the geometric antiproduct altogether. But those who choose that route still make use of both the wedge product and antiwedge product, and they still make use of both the dot product and antidot product along with the norms that go with them (whether they’re aware of it or not), so eschewing the geometric antiproduct seems like drawing an arbitrary line in the sand that they refuse to cross. Both products are there, so you might as well use the one that lets you enjoy the conceptual advantages of the point-based approach.

Additional Resources