1 2025/06/20
When I first learned about vector spaces and their dot and cross products, I felt that something was missing from the explanations. I didn’t feel like I got a good intuition, and the cross product in particular felt mysterious and clunky; why did it have to give another vector, and why does it only seem to work in three dimensions? This blog post is an answer for past me. Get your feet wet by building a better intuition for deriving the dot product, then discover a generalization of the cross product that works in any dimension, not just 3D.
I assume basic familiarity with dot products and cross products— this post does not do a good job of explaining them if you’ve never seen them before!
Let’s start with the inner/dot product, the more familiar of the two. You may have seen it defined as
From here, let us consider the properties that this has. The definition of
By thinking about it for a bit longer, we also get that it should be distributive:
These properties of the dot product actually already imply the Pythagorean theorem! From our definition of the dot product,
we know that
Here, orthonormal just means that they are perpendicular,
with
Hey the 3rd line seems highly suggestive of the law of cosines… And indeed, if we draw a triangle of tip-to-tail vector addition with the vectors
Now for the fun part! Once again, I will start from pure geometry without any reference to coordinates, but instead of starting
directly from the cross product, let’s start with the wedge product
Just trust that this thing “is a parallelogram” for now; we can still make precise mathematical statements with this. For example, we know the area of the parallelogram:
This gives us a nice symmetry with the case of the dot product, but beware!
Like the dot product, it turns out that the wedge product works nicely with scalar multiplication and is both left-distributive and right-distributive.
You can draw the diagrams to convince yourself of this as an exercise (I’m too lazy to make another tikz
diagram).
Also, since the area of the parallelogram vanishes as vectors become parallel (and
Ok, that was a lot. Let’s work through an example of taking a wedge product in 2D: Let
Hey! That’s the formula for the determinant of the 2x2 matrix
What we’ve discovered here is a bivector, aka a 2-form. It’s just an upgraded version of a vector (which we also call a 1-form), where
instead of having an oriented 1D length, we have an oriented 2D area. Where vectors have a length and a direction,
bivectors have an area and an orientation. While this orientation can only be one of two possibilities (like heads or tails) in a 2D vector space,
in 3D you have the freedom to face any direction you want! This is how a bivector ties into what you already know about the cross product:
the cross product
Naturally, since we’ve started counting, we can keep doing wedge products and extend this to volumes, hypervolumes, etc. That number you see in front of “-form”
is called the grade, and it tells you the dimension of the object you’re working with. Keep in mind the difference between the dimension of the object
and the dimension of the vector space you’re working in; you can have a 2D sheet of paper in your 3D room.
If we are careful to avoid the
The
To fully understand the connection between the wedge product and the cross product, we must understand the Hodge dual.
Let’s take the example of a 2D space and consider what objects (
Grade | Name | Basis Blades | No. Basis Blades |
---|---|---|---|
0 | Scalar | 1 | |
1 | Vector | 2 | |
2 | Bivector | 1 |
The space of
Grade | Name | Basis Blades | No. Basis Blades |
---|---|---|---|
0 | Scalar | 1 | |
1 | Vector | 3 | |
2 | Bivector | 3 | |
3 | Trivector | 1 |
Hey it’s nice and symmetrical! It turns out we end up getting a Pascal’s triangle structure, as
the number of basis blades of grade
The case of the trivector in 3D and the bivector in 2D
are special, as there is only one element of that grade. We can pair them up with the scalars, and so we call them
pseudoscalars. To match with the scalar unit (aka the number 1), we say that the pseudoscalar unit
In general, there is an easy mapping from
More specifically, the Hodge dual
Remember that in 3D, the pseudoscalar
The dual of a vector is a bivector! But what about in 2D, where the dual of a vector is another vector?
Huh! The Hodge dual is clearly not a self-inverse: if we apply it twice in this case, we pick up a minus sign. But what did
it do geometrically? This is a 90-degree counterclockwise rotation! We’ve moved the
Now for some bonus content to make Dr. Adler’s MVC class make sense. Recall the gradient theorem, the divergence theorem, and Stokes’ theorem:
Now that we understand the wedge product, we can begin to understand generalized Stokes:
where the
We sum over all the (orthonormal) basis vectors
Input to Exterior Derivative | Operation (Up to Hodge Dual) | Result |
---|---|---|
Scalar Field | Gradient | Vector Field |
Vector Field | Curl | Bivector Field |
Bivector Field | Divergence | Pseudoscalar Field |
Pseudoscalar Field | N/A | Just 0 |
The exterior derivative always increases the grade of the field by 1. You can verify algebraically that taking the exterior derivative is equivalent to these operations (maybe I’ll write up a full explanation of this later). Anyways, from the definition of the exterior derivative, we get the identity that
For our derivation, let’s expand:
We see that the terms are
You might have noticed that to take a divergence, we must Hodge dual our vector field first to get a bivector field, then Hodge dual our result again to get back to a scalar from a pseudoscalar. Thus it is useful to define a codifferential operator:
Ok, this is actually wrong and will sometimes give you the wrong sign but close enough.
The codifferential operator also has the property that
You can verify this algebraically again (but I don’t want to). The negative sign is from the detail of the real definition of the codifferential that I’m glossing over. I also probably want to go over the geometric connection for curl, div, grad more in this post.
Turns out the Hodge dual actually depends on the metric for the inner product. Huh, learned that while researching this. ↩