Taking two vectors, we can write every combination of components in a grid:
This completed grid is the outer product, which can be separated into the:
Instead of thinking “When do I need the cross product?” think “When do I need interactions between different dimensions?”.
Area, for example, is formed by vectors pointing in different directions (the more orthogonal, the better). Indeed, the cross product measures the area spanned by two 3d vectors (source):
(The “cross product” assumes 3d vectors, but the concept extends to higher dimensions.)
Did the key intuition click? Let’s hop into the details.
The dot product represents the similarity between vectors as a single number:
For example, we can say that North and East are 0% similar since $(0, 1) \cdot (1, 0) = 0$. Or that North and Northeast are 70% similar ($\cos(45) = .707$, remember that trig functions are percentages.) The similarity shows the amount of one vector that “shows up” in the other.
Should the cross product, the difference between vectors, be a single number too?
Let’s try. Sine is the percentage difference, so we could write:
Unfortunately, we’re missing some details. Let’s say we’re looking down the x-axis: both y and z point 100% away from us. A number like “100%” tells us there’s a big difference, but we don’t know what it is! We need extra information to tell us “the difference between $\vec$ and $\vec$ is this” and “the difference between $\vec$ and $\vec$ is that“.
So, let’s express the cross product as a vector:
Now $\vec \times \vec$ and $\vec \times \vec$ have different results, each with a magnitude indicating they are “100%” different from $\vec$.
Two vectors determine a plane, and the cross product points in a direction different from both (source):
Here’s the problem: there’s two perpendicular directions. By convention, we assume a “right-handed system” (source):
If you hold your first two fingers like the diagram shows, your thumb will point in the direction of the cross product. I make sure the orientation is correct by sweeping my first finger from $\vec$ to $\vec$. With the direction figured out, the magnitude of the cross product is $|a| |b| \sin(\theta)$, which is proportional to the magnitude of each vector and the “difference percentage” (sine).
To remember the right hand rule, write the xyz order twice: xyzxyz . Next, find the pattern you’re looking for:
Now, xy and yx have opposite signs because they are forward and backward in our xyzxyz setup.
So, without a formula, you should be able to calculate:
Again, this is because x cross y is positive z in a right-handed coordinate system. I used unit vectors, but we could scale the terms:
A single vector can be decomposed into its 3 orthogonal parts:
When the vectors are crossed, each pair of orthogonal components (like $a_x \times b_y$) casts a vote for where the orthogonal vector should point. 6 components, 6 votes, and their total is the cross product. (Similar to the gradient, where each axis casts a vote for the direction of greatest increase.)
xy and yx fight it out in the z direction. If those terms are equal, such as in $(2, 1, 0) \times (2, 1, 1)$, there is no cross product component in the z direction (2 – 2 = 0).
The final combination is:
where $\vec$ is the unit vector normal to $\vec$ and $\vec$.
Don’t let this scare you:
If you like, there is an algebraic proof, that the formula is both orthogonal and of size $|a| |b| \sin(\theta)$, but I like the “proportional voting” intuition.
Again, we should do simple cross products in our head:
Why? We crossed the x and y axes, giving us z (or $\vec \times \vec = \vec$, using those unit vectors). Crossing the other way gives $-\vec$.
Here’s how I walk through more complex examples:
So, the total is $(-3, 6, -3)$ which we can verify with Wolfram Alpha.
Connection with the Determinant
You can calculate the cross product using the determinant of this matrix:
There’s a neat connection here, as the determinant (“signed area/volume”) tracks the contributions from orthogonal components.
There are theoretical reasons why the cross product (as an orthogonal vector) is only available in 0, 1, 3 or 7 dimensions. However, the cross product as a single number is essentially the determinant (a signed area, volume, or hypervolume as a scalar).
Connection with Curl
Curl measures the twisting force a vector field applies to a point, and is measured with a vector perpendicular to the surface. Whenever you hear “perpendicular vector” start thinking “cross product”.
We take the “determinant” of this matrix:
Instead of multiplication, the interaction is taking a partial derivative. As before, the $\vec$ component of curl is based on the vectors and derivatives in the $\vec$ and $\vec$ directions.
Relation to the Pythagorean Theorem
The cross and dot product are like the orthogonal sides of a triangle:
For unit vectors, where $|a| = |b| = 1 $, we have:
I cheated a bit in the grid diagram, as we have to track the squared magnitudes (as done in the Pythagorean Theorem).
Advanced Math
The cross product & friends get extended in Clifford Algebra and Geometric Algebra. I’m still learning these.
Cross Products of Cross Products
Sometimes you’ll have a scenario like:
First, the cross product isn’t associative: order matters.
Whoa! How’d we get back to $\vec$? We asked for a direction perpendicular to both $\vec$ and $\vec$, and made that direction perpendicular to $\vec$ again. Being “doubly perpendicular” means you’re back on the original axis.
Dot Product of Cross Products
I never really memorized these rules, I have to think through the interactions.
Other Coordinate Systems
The Unity game engine is left-handed, OpenGL (and most math/physics tools) are right-handed. Why?
In a computer game, x goes horizontal, y goes vertical, and z goes “into the screen”. This results in a left-handed system. (Try it: using your right hand, you can see x cross y should point out of the screen).
Applications of the Cross Product
Enjoy the article? There's plenty more to help you build a lasting, intuitive understanding of math. Join the newsletter for bonus content and the latest updates.