Just to lay the prerequisites on the table, in this post I will assume some familiarity with:
- Vectors in 3D
- Spherical polar coordinates
- Trigonometric identities
- Complex number basics
1. Introduction
If you’ve ever taken a dive down the rabbit hole of theoretical physics, you might well have come across a mysterious piece of mathematical machinery known as a spinor. If not, you should probably read this article nevertheless, because spinors are one of the fundamental ingredients of our universe, and are fascinating objects in their own right. You can buy t-shirts that display an equation known to physicists as the “Standard Model Lagrangian” — the single equation that captures nearly all physical phenomena that have ever been observed (except for gravity, oops!) — and on these t-shirts you will see a symbol \psi. This \psi is a spinor, and it is the central object in the description of fundamental matter particles like electrons and quarks. So if you care about understanding reality then you should probably care about spinors. But what are they?!

When I first learnt about spinors, they were only ever described very abstractly as being complex column vectors that behave in a certain way under rotations, or sometimes they’d be called “the square root of a vector”. These definitions capture the algebraic essence of what a spinor is, and how physicists usually think of them, but if you’re a common neanderthal like me, you might prefer a more geometrical and intuitive picture — something you can actually see with your eyes. So what is a spinor and what does it look like? In this blog post I will try my best to “invent” spinors from the ground up, with minimal abstraction, and relying only on the prerequisites listed above. The post will make use of a series of interactive Geogebra applets, which I hope the reader will find useful and fun (although unfortunately they don’t work well on small screens — you’ll need to use your computer or tablet for the applets).
While some of this post is just a rewriting of existing literature on the topic, the final geometrical picture I’ll present for understanding spinors is actually my own construction, which, as far as I’m aware, hasn’t been described in the literature before. Appropriately enough, given that I’m writing this blog post for the Summer of Math Exposition, run by the beautifully animated math(s) YouTube channel 3blue1brown, I came up with the construction by asking myself the question “how would spinors be shown visually in an episode of 3blue1brown?”.
2. Vectors and Flags
Let’s start with something that we should all understand: the humble vector. In the familiar 3D space in which we live, a vector \vec{v} can be pictured as an arrow like the one in the applet below, and, as we all know, it represents a quantity that has both a size and a direction. So it could represent the velocity of a particle, or it could represent some force pushing or pulling a particle. To describe the vector in terms of a coordinate system, we can write it as a column of components
\vec{v}=\begin{pmatrix} v_x\\v_y\\v_z\end{pmatrix},
\tag{1}where v_x, v_y and v_z are real numbers which tell us how far we have to walk along the three basis vectors \hat{x}, \hat{y} and \hat{z} to get from the tail to the tip of the vector.
A spinor in three dimensions is a bit like a vector, but with a flag attached at its business end! We think of the flag itself as being totally rigid and having a fixed magnitude, so the only thing we need to keep track of is its direction. This means that a spinor essentially consists of two parts: (1) a vector — which describes the flagpole; and (2) an additional direction, perpendicular to the flag pole — which represents the flag. We’ll see later that a spinor also carries one more bit of information [literally], which we’ll come to in good time.
Let’s think about how we could describe a spinor in terms of vectors. Easy! The flagpole can be represented by one vector, and the flag direction can be represented by another vector, at a right angle to the flagpole. This second vector, which represents the flag direction, might as well be a unit vector, since the flag itself has a fixed magnitude. For each choice of flagpole there’s only a circle’s worth of possible choices for the flag direction, so we actually only need to specify a single angle \alpha to keep track of this. If we imagine the flag hanging straight down in equilibrium under gravity (acting in the negative z-direction) — or hanging as straight down as it can, given the constraint that the flag must stay orthogonal to the flagpole — then the angle \alpha can be measured as the departure from this equilibrium point, where we use the right-hand rule to determine which way to go from equilibrium at \alpha = 0. Play around with the applet below and you’ll see what I mean.
Hence overall, to describe our flag, we just need to specify one vector and one angle: the flagpole and the flag angle. Since the vector can be represented by 3 numbers and the angle can be represented by 1 number, it takes 4 numbers to completely specify our flag.
So far so good. We could just end this right here if our only goal was to describe a flag in 3D. But, in practice, physicists almost never describe a spinor in this way. If you ask a physicist how to write a spinor \psi in 3D they’ll tell you it’s a pair of complex numbers, written together as a column vector like this:
\psi=\begin{pmatrix} \psi_1 \\ \psi_2 \end{pmatrix}~~~~\text{with} ~~~~~ \psi_1,\psi_2\in\mathbb{C}~~.
\tag{2}It turns out this really does describe the same object as our flag, and it does so in a beautifully elegant way. So how on Earth do we trade our vector-plus-angle description of a flag for a pair of complex numbers, such that said complex numbers still contain all the information about our flag?
3. Stereographic Projection
As a warm up, before attempting to capture the flag with complex numbers, let’s see how we can represent a unit vector with a complex number. The idea here is that a unit vector can be thought of as a unit flagpole, so if we can work out a complex number representation of this then, with a bit of luck, we should be able to generalise up to a complex number representation of a whole flag.
The set of all possible values of a unit vector forms a unit sphere in space, whereas the set of all possible values of a complex number forms a plane. So we need a one-to-one way to map the unit sphere to the complex plane: a map that takes each possible unit vector — each point on the unit sphere — and sends it to a unique complex number — a point on the complex plane. There’s a very lovely way to do this, called stereographic projection.
Stereographic projection works like this: firstly we’ll imagine a copy of the complex plane embedded in the same 3D space that our vectors and unit sphere live in. We’ll place this complex plane so that it coincides with the x–y plane, and such that both planes share an origin at the centre of the sphere, with the real and imaginary axes coinciding with the x– and y-axes, respectively. Then for each point P on the unit sphere, we draw a straight line from the North Pole N through P. This straight line NP from the North Pole to P intersects the x–y plane exactly once, at a location we will call Q. Since the intersection point Q lies in the x–y plane, where we have embedded the complex plane, Q can be identified with a complex number \zeta. This way we can associate a unique complex number \zeta(P) with each point P on the unit sphere.
From the applet it’s easy to see that the Southern Hemisphere gets mapped to the inside of the complex plane’s unit circle; the equator gets mapped to the unit circle itself; and the Northern Hemisphere gets mapped to the outside of the unit circle. The further North a point is, the further away from the origin its corresponding complex number is — so the further North the point P is, the larger the modulus of \zeta(P). It’s clear that to represent the North Pole as a complex number, we’d need a complex number with an infinitely large modulus, so, strictly speaking, the North Pole is excluded from this mapping.
In order to be a bit more explicit, let’s work out the precise complex number \zeta associated with the completely generic point (x,y,z)=(\sin\theta\cos \ \phi, \sin\theta\sin\phi,\cos\theta) on the unit sphere — that is, the point with polar coordinates (r,\theta,\phi)=(1,\theta,\phi). To find the phase (a.k.a. the “argument”) of the complex number is a piece of cake; a quick glance at the applet reveals that this is just the azimuthal angle \phi! But what about the modulus |\zeta|?
To compute |\zeta|, all we need to do is take a look at the triangle NQO and the triangle formed by N, P and the point (0,0,\cos\theta), which we could call P_z, since it’s the projection of P onto the z-axis. It’s not hard to see that these triangles NQO and NPP_z are similar! The height of triangle NQO is 1, and the length of its base is |\zeta|, the thing we’re looking for; the height of triangle NPP_z is 1-\cos\theta, and a little bit of high-school trigonometry reveals that the length of its base is \sin\theta. Since the two triangles are similar they must have the same base-to-height ratio:
\frac{|\zeta|}{1}=\frac{\sin\theta}{1-\cos\theta}\,\,.
\tag{3}
And hence our complex number’s modulus is simply
|\zeta|=\frac{\sin\theta}{1-\cos\theta}=\frac{2\,\sin\left(\tfrac{\theta}{2}\right)\cos\left(\tfrac{\theta}{2}\right)}{2\,\sin^2\left(\tfrac{\theta}{2}\right)}=\cot\left(\tfrac{\theta}{2}\right)\,,
\tag{4}where we used the double angle identities. Finally, putting the phase and the modulus together, we can think of \zeta(P) as being a function of the \theta and \phi coordinates of P:
\zeta(\theta,\phi)=|\zeta|e^{i\phi}=\cot\left(\tfrac{\theta}{2}\right)e^{i\phi}\,.
\tag{5}
Now that we know how to represent a point on the unit sphere — or equivalently, a unit vector — with a single complex number, we’re exactly half way to being able to represent a flag with a pair of complex numbers!
4. Two Problems to Solve
If we’d like to represent a general flagpole of any length using the stereographic projection method presented above, then there are two obstacles to overcome:
- A single complex number contains only 2 real numbers, and it takes 3 real numbers to describe a general flagpole (i.e. a general vector);
- As we saw above, there is no finite complex number that can represent the North Pole, so this is excluded from our description, meaning we have no way to describe a vector pointing straight up in the z-direction.
When it comes to solving the first problem, clearly a single complex number alone, with its mere 2 real degrees of freedom, isn’t capable of capturing all there is to know about a 3D vector; we will need to introduce at least one more real degree of freedom somehow. And when it comes to solving the second problem, what we’re essentially looking for is a more rigorous way of saying something like “the North Pole is located at \zeta=\infty”. One interesting way to kill two birds with one stone would be if we could somehow set up a stereographic projection scheme such that instead of ending up with just \zeta, we’d end up with a pair of complex numbers \psi_1 and \psi_2, whose ratio returns \zeta:
\zeta=\frac{\psi_1}{\psi_2}.
\tag{6}This would both bring more degrees of freedom into the mix and have the advantage that the North Pole could be thought of as being the location described when \psi_2=0. “But why would we want both numbers to be complex when this introduces 4 real degrees of freedom instead of the 3 we need?” I hear you ask! Yes, this would work just as well if \psi_2, say, was real, but… (a) things are prettier and more democratic when we let \psi_1 and \psi_2 be on the same footing; (b) ultimately we want to describe the whole flag, and it takes 4 real numbers to do this, so using 2 complex numbers here seems like it could be a good idea in the long run. This just means that, for now, until we hoist the flag up the flagpole, we expect 1 out of our 4 real degrees of freedom to be redundant, since a flagpole alone can be summed up by just 3 real numbers.
Ok, ok, algebraically this vaguely makes some sense, but what does it mean geometrically? How do we take our stereographic projection construction and adapt it so that we end up with two complex numbers at the end whose ratio is \zeta?
5. Shifting and Twisting the Projection Plane for a Unit Flagpole
As a step towards solving the two problems outlined above, our immediate goal is to invent a new stereographic projection scheme that produces a pair of complex numbers \psi_1 and \psi_2, whose ratio returns \zeta, as in (6). For now, to keep things nice and simple, let’s go back to thinking only about a unit flagpole — remember, this requires only 2 degrees of freedom. As we already know that one complex number alone will suffice for the job of describing a unit flagpole, we might expect that one of the two complex numbers \psi_1 and \psi_2 will end up being an undetermined free complex parameter, whose value isn’t actually dictated by the properties of the unit flagpole, but rather is something to be chosen arbitrarily — spoiler: it’s going to turn out to be \psi_2 that is arbitrary. If you’re not sure exactly what I mean here, you should see what I’m talking about as we go on.
Although we don’t really know anything about how our new stereographic projection is going to produce the desired numbers \psi_1 and \psi_2, our wish expressed in (6) is equivalent to saying that
\psi_1=\psi_2\,\zeta.
\tag{7}Geometrically, this means that \psi_1 should be just like our old complex coordinate \zeta, but scaled and rotated in the complex plane by the length and phase of \psi_2! In other words, if we write \psi_2=\delta\,e^{i\beta}, then \psi_1 should be \delta times the size of \zeta, as well as being \beta radians further round the complex plane.
Let’s think first of all about how we could change our projection to obtain a result that’s been scaled by a real number \delta>0. How do you adjust a projection in such a way that scales the overall size of the image? Well, that’s easy! You just change the distance between the light source and the screen! In our case, the “light source” is the North Pole, and the “screen” is the complex plane. In our original stereographic projection we placed the complex plane in the z=0 plane in 3D space, but let’s now project onto a plane at a vertical depth of \delta below the North Pole of our unit sphere — that is, let’s consider projecting onto the plane z=1-\delta. The stereographic projection works just the same as it did before, but this time we’ll find that the new complex number that represents the point P on the unit sphere, which we will call \psi_1(P), is scaled by a factor of \delta compared to our old friend \zeta(P):
\psi_1(P) = \delta \, \zeta(P)\,\,.
\tag{8}To check this, just look at the situation from side-on, to reveal a pair of similar triangles, in which one is scaled by a factor of \delta relative to the other.
Having promoted the vertical position of the plane to the status of a free variable \delta, we can now add a fun twist — quite literally. Instead of lining up our complex plane such that the real and imaginary axes coincide with the x– and y-axes, respectively, we will add a twist, rotating our complex plane clockwise about the z-axis by an angle \beta. This of course means that the point P gets projected down to a different spot on the complex plane, adding the angle \beta to the phase of our resulting complex coordinate \psi_1(P):
\psi_1(P)=\delta\,e^{i\beta}\zeta(P)\,.
\tag{9}This is just what we wanted! Adjusting the angle of our complex plane by swivelling it about the z-axis changes the phase of \psi_1(P), while adjusting the plane’s vertical position changes the modulus of \psi_1(P). The complex number \psi_2=\delta\,e^{i\beta}, which doesn’t depend on P, just provides a neat way to keep track of how the complex plane is embedded in 3D space, while the complex number \psi_1(P) keeps track of the actual result of the projection.
In the applet above, \psi_2 is shown plotted on the complex plane alongside \psi_1(P). You can see there how \psi_2‘s modulus on the complex plane is the same as its vertical depth below the North Pole, as emphasised by the square shown stretching between the North Pole and \psi_2.
Looking at equations (5) and (9), we see that if we think of \psi_1(P) as a function of \theta and \phi then
\psi_1(\theta,\phi)=\delta\cot\left(\tfrac{\theta}{2}\right)e^{i(\phi+\beta)}\,.
\tag{10}
Although they currently have quite different interpretations, if we feel like it, we can stack our slightly odd couple of complex numbers into a little 2-component column vector, which we will call \psi, just as in (2) (although this is not yet really a bona fide spinor!):
\psi=\begin{pmatrix} \psi_1 \\ \psi_2 \end{pmatrix}=\begin{pmatrix} \delta\cot\left(\tfrac{\theta}{2}\right)e^{i(\phi+\beta)} \\ \delta\,e^{i\beta} \end{pmatrix}.
\tag{11}
At this point \delta and \beta are just completely arbitrary parameters that tell us how we’ve placed our complex plane in space; neither of them depends on the actual unit vector (whose tip is at P) that we’re representing. The idea now is that when we come to try and represent the whole flag, we will put these spare parameters to use, associating \delta and \beta with the flagpole size and flag angle, respectively.
6. A Flagpole of Any Size
We’ve seen how to represent a unit flagpole using a single complex number via stereographic projection onto the x–y-plane, as well as how to project onto a shifted and twisted plane whose shift and twist are parameterised using a second complex number \delta\,e^{i\beta}. Next, we will adapt the latter description to let \delta parameterise the flagpole size, and in the process we’ll automatically solve the problem of how to incorporate the North Pole, that is, how to represent a flagpole that is pointing in the z-direction.
Let the flagpole be the 3D vector
\vec{v}=\begin{pmatrix} v\sin\theta\cos\
\phi\\ v\sin\theta\sin\phi \\ v\cos\theta\end{pmatrix}
\tag{12}
with length v. We’ve seen above how we can we can store the information about a unit flagpole in 3D space in the form of a complex 2-component vector \psi, but now we want to represent a flagpole of arbitrary length v. A nice way to do this would be to associate the magnitude of \vec{v} with the “magnitude” of \psi, where we will have to define this latter magnitude in some suitably sensible and natural way. Let’s define the magnitude |\psi| of our complex vector \psi in the following sensible and natural way:
|\psi|\coloneqq\sqrt{|\psi_1|^2+|\psi_2|^2}\,\,.
\tag{13}
In fact, this is the standard definition of the length of a complex vector. It’s the straightforward generalisation of the notion of magnitude for 2-component real vectors, but with some modulus signs thrown in to ensure that the result is still a real number. It turns out things will work out nicely if we demand that |\psi|^2 model the flagpole length |\vec{v}|=v:
|\psi|^2=|\vec{v}|\,.
\tag{14}
The more obvious choice at this stage might be to identify |\psi| directly with |\vec{v}|, rather than identifying |\psi|^2 with |\vec{v}|, but the advantage of this decision will present itself soon. Computing |\psi|^2 from the components in (11) using our definition in (13) we find that:
\begin{aligned}\
|\psi|^2&=\delta^2\cot^2\left(\tfrac{\theta}{2}\right)+\delta^2\\
&=\delta^2\text{cosec}^2\left(\tfrac{\theta}{2}\right),
\end{aligned}\
\tag{15}
so if we’d like to enforce the relationship |\psi|^2=|\vec{v}| then we need
\delta^2\text{cosec}^2\left(\tfrac{\theta}{2}\right)=v,
\tag{16}
which can clearly be achieved if we do something a little strange and let \delta be a function of \theta as follows:
\delta=\sqrt{v}\sin\left(\tfrac{\theta}{2}\right).
\tag{17}
In this case our 2-component complex vector from (11) becomes
\psi=\begin{pmatrix} \psi_1 \\ \psi_2 \end{pmatrix}=\begin{pmatrix} \sqrt{v}\cos\left(\tfrac{\theta}{2}\right)e^{i(\phi+\beta)} \\ \sqrt{v}\sin\left(\tfrac{\theta}{2}\right)e^{i\beta\phantom{(+\phi)}} \end{pmatrix}.
\tag{18}
This is what Penrose and Rindler (in their seminal textbook Spinors and Spacetime) call a “spin vector”. It’s worth emphasising here that this spin vector is essentially just a highly elaborate way of describing an ordinary spatial vector \vec{v}. There are many obvious reasons why this isn’t a more mainstream way to write a vector, not least of these being that the twist parameter \beta is entirely redundant and completely arbitrary; it doesn’t describe any property of the actual vector \vec{v}, but only represents the angle of the complex plane that we’re choosing to project onto.
Since we get the luxury of choosing \beta, we might as well choose it in such a way that makes the spin vector’s two components look a little less lopsided. Currently only the upper component \psi_1 depends on \phi, but we could remedy this by making our funky twist \beta a little funkier; just as we made \delta into a function of \theta, let’s choose to make \beta into a function of \phi in the following fashion:
\beta=\tfrac{1}{2}\left(\alpha-\phi\right),
\tag{19}
where \alpha is an arbitrary constant, which we will put to good use shortly. Why this choice? Because then our spin vector takes the much prettier form:
\psi=\begin{pmatrix} \psi_1 \\ \psi_2 \end{pmatrix}=\begin{pmatrix} \sqrt{v}\cos\left(\tfrac{\theta}{2}\right)e^{\tfrac{i}{2}(\alpha+\phi)} \\ \sqrt{v}\sin\left(\tfrac{\theta}{2}\right)e^{\tfrac{i}{2}(\alpha-\phi)} \end{pmatrix}.
\tag{20}
This certainly looks very nice, but what does it actually mean for \beta to be a function of \phi? It just means that the angle at which we embed our complex plane in 3D space is now different for vectors with differing values of \phi! The best way to get a feel for this is by playing around with the applet below. As we look at vectors with different \phi values the complex plane swizzles around, and as we look at vectors with different \theta values the complex plane moves up and down.
Unlike our initial stereographic projection using one complex number, this spin vector description of \vec{v} can incorporate the purely Northward case with \theta=0,
\vec{v}=\begin{pmatrix}0\\0\\v\end{pmatrix};
\tag{21}
the corresponding spin vector is just
\psi=\begin{pmatrix}\sqrt{v}\,e^{\tfrac{i}{2}(\alpha+\phi)}\\0\end{pmatrix}.
\tag{22}
On the other hand, the purely Southward case with \theta=\pi has the spin vector
\psi=\begin{pmatrix}0\\\sqrt{v}\,e^{\tfrac{i}{2}(\alpha-\phi)}\end{pmatrix}.
\tag{23}
7. The Spinor Proper
Right, it’s time to hoist up the flag! That is, we now we turn our attention to the final task: representing a flag with a pair of complex numbers, as the mighty physicist does. The good news is that we’ve already done all of the hard work! You’ve probably guessed how this is going to go down. We’ll just identify the spare angle \alpha with the flag angle. This angle \alpha was just a free and redundant parameter when we were describing the flagpole (i.e. 3D vector) on its own with a spin vector, but now that we’re trying to represent the whole flag, we might as well use \alpha to represent the flag angle.
We’ve done it! Equation (20) represents our spinor! It contains all the information about our flag, stored in the form of a handy complex vector. The object presented in (20) can describe either a spin vector or a spinor. The only difference is interpretation: a spin vector is a description of an ordinary vector, and in this case the angle \alpha is completely arbitrary, not representing a property of our vector, but rather representing a twist of the complex projection plane that we get to choose; on the other hand, a spinor is a description of a flag, so in this case the angle \alpha represents the flag angle, and so is completely determined by the flag.
If you think this description of our flag seems a little overelaborate, or even rather contrived, then I should emphasise the following point: spinors were not historically invented just to describe flags in the way we’ve done here. If you read about spinors in the standard textbooks of quantum mechanics or quantum field theory then you’ll most likely see a very different account of what they are, usually based on fairly abstract algebraic principles and the study of rotational symmetries. I’ll just have to fob you off by saying that there are deep technical reasons for representing a flag in this way that I won’t go into here, as it would mean quadrupling the length of this article — at least.
8. One Extra Bit of Information
Experimenting a little with the final applet, you get a sense of this whole thing being some kind of charming mechanical contraption that takes our flag and returns a pair of complex numbers. It’s very much as if the flagpole and flag are connected to the complex plane by a system of gears. This gear system works on a kind of 2:1 principle; that is, when we rotate the flag or the flag pole by some amount, the complex plane, and hence \psi_1 and \psi_2, rotate by half this amount (at least in the case of varying \phi or \alpha). Go ahead and check this out for yourself! This property is known as “angle doubling”, and we can see it algebraically as being a result of all the angles in (20) coming with factors of 1/2 attached to them.
The really fascinating thing about the angle doubling property is that if we rotate \phi or \alpha by 2\pi radians then the flag ends up looking unchanged, but the complex plane only swizzles around by an angle of \pi radians, which has the effect of flipping the signs of \psi_1 and \psi_2. Algebraically, you can see that this comes from the fact that e^{\tfrac{i}{2}\phi} or e^{\tfrac{i}{2}\alpha} evaluated when \phi or \alpha is 2\pi just gives everybody’s favourite identity:
e^{i\pi}=-1.
\tag{24}
This means that our spinor \psi goes to minus itself after a 2\pi rotation! It takes a 4\pi rotation — or a multiple thereof — to bring the spinor back to its original value! In other words, \psi and -\psi both represent the same flag in 3D space; our flag isn’t sensitive to the overall sign of \psi.
All of this means that the complex column spinor \psi contains one extra bit of information than the flag itself, and it turns out that this extra bit — the sign of \psi — is actually essential in the spinor’s physical applications. For this reason, we are to regard \psi as being more fundamental than the flag itself. Does this mean we have to just discard the whole flag interpretation entirely? That seems a real shame after all of our hard work… One way we could hold on to our beloved flag picture would be to imagine that the flag has the magical property that it discretely changes colour from blue to pink — or vice versa — every time it is rotated by 2\pi, and that the overall sign of \psi just represents which colour the flag is. Of course this whimsical notion of colour is a little abstract and doesn’t really seem very physical, but for the sake of a mental picture it has the advantage that it establishes a nice invertible mapping between spinors and (magical) flags.
9. Rounding Things Off
In this article we have only just scratched the surface of the theory of spinors. There is so much more I’d love to say, but this is meant to be a blog post, not a textbook. If you’d never come across spinors before then hopefully this article will have given you a good intuition for what they’re all about; and if you had encountered spinors already in quantum mechanics, then hopefully you will have deepened your understanding by seeing them in a fully geometrical context.
I should point out that the spinors we’ve looked at here are relevant to 3D space only. If we want to make this picture compatible with special relativity we need to work out how to make sense of this in the context of 4-dimensional spacetime. To learn about this, and to dive deeper into the theory of spinors in general, I strongly recommend checking out Spinors and Spacetime by Roger Penrose and Wolfgang Rindler, or An Introduction to Spinors by Andrew Steane — these were actually the only two sources I used to write this article. Otherwise, I intend to write a follow up article soon in which I’ll boost things up into 4-dimensional spacetime.
Hi, this is a comment.
To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.
Commenter avatars come from Gravatar.