If anyone is curious about applications - these can be used to approximate low-frequency components of a point's surroundings. They were used in Halo 3 to do real-time HDRI lighting and shadowing (see "Lighting and Material of Halo 3" from Siggraph 2008).
After the success of this method, there was a fairly long stretch of researchers looking for a better orthonormal basis (such as 2D Haar wavelents, as spherical harmonics is basically a Fourier Transform on a spherical basis). I think the pinnacle of this direction was Anisotropic Spherical Gaussians from 2013.
These days though, you'd at least use a neural net to learn a basis (or use a neural net to learn something else entirely). And of course, Gaussian Splats are the technique du jour for realtime relighting.
They are used also to characterize the statistical properties of fields over the sphere. A notable example is the pattern of hot/cold spots in the Cosmic Microwave Background Radiation (CMBR, [1]). They are distributed stochastically, and the best way to fit cosmological models against the measurements is to decompose the temperature/polarization fields into spherical harmonics and compute the power spectrum associated with each ℓ (which plays the role of a “spatial frequency” over the sky sphere).
I wonder if Cartesian-basis multipole expansion could get the best of both worlds of GS and SH, as the former basis captures anisotropy but not detail while the latter captures detail but not anisotropy, whereas Cartesian multipole expansion naturally captures both right from the low orders, and is much easier to align to game worlds.
(to be precise, both can be captured by either if you include enough orders, what I mean is mainly how the information distribution scales with respect to each attribute)
Also, the age-old physics question: what is the minimum order of spherical harmonics required to approximate a cow?
Another application is Ambisonic sound spatialisation formats, where a finite set of signals corresponding to spherical harmonics are used to encode spatial sound fields. https://en.wikipedia.org/wiki/Ambisonics
in QM the spherical harmonics are more of a basis space for electronic state and not the actual electronic state, right? So does that mean there are other ways to think about electron configurations that satisfy Shrodinger etc?
For those of you curious about WHY these shapes look like the do (e.g. "why does l=0, m=0 have a donut in the middle of two lobes?"), this video from Münster University finally gave me an intuitive understanding of how these shapes arise.
Aren’t the spherical harmonics functions with domain S^2, the sphere? I think the solutions to the (time-independent) Schrödinger equation for an electron in a hydrogen atom are given by like, a product of a function of distance from the center with one of the spherical harmonics, or something like that?
you are correct. The Schrödinger equation for the hydrogen atoms in spherical coordinates demonstrates separability which allows you to separate the radial and angular coordinates. The radial term, which is most interesting due to the 1/r potential is typically a Laguerre polynomial. The angular term is 'free' from any potential is typically a spherical harmonic.
The spherical harmonics in general are typically derived as part of the solution to the Laplace equation in spherical coordinates. A bit of a semantic point (though perhaps the distinction is important) though, since the Laplace equation's angular dependence is identical to that of the Schrödinger equation for the hydrogen atom.
See also the “cubic harmonics”, which is an equivalent basis to spherical harmonics but they are real instead of complex, and also more natural to use in cubic crystals due to their symmetries.
I have also seen “triangular harmonics”, “zonal harmonics”, etc. in use in other materials.
Very very high level explanation that I'm trying to paraphrase from memory, so there's a good chance parts of it are wrong or use the wrong terminology:
A polynomial is a function like `f(x) = Ax^3 + Bx^2 + Cx^1 + Dx^0`
You can approximate most(all?) continuous functions using polynomials. The more "parts" (e.g. Bx^2 is one part) of the polynomial you have, the better you can represent a given function.
The previous example was a 1d function, but polynomials can be over any number of dimensions. E.g. a 3d polynomial `f(x, y, z)`.
Spherical harmonics are just a form of 3d polynomials, but with some special "parts" (called a basis function), with the amount of parts you have called a "band".
As for what they're good for, they're a fairly compact way of representing and filtering 3d signals.
In 3d rendering, they're really good at storing light hitting a point from different directions. You have an incoming ray of light on a unit sphere/hemisphere with origin x, y, z going towards the given point. You can then take your list of light rays with various (x,y,z) origins and (r,g,b) intensities, and then form a spherical harmonics approximation over it (basically a fitted 3d polynomial), which can be stored as just a few coefficients (A, B, C, D, etc...) using 1 or 2 bands, and cheaply computed (querying the light value r,g,b for a given ray) by plugging in the ray's x, y, z into the formula.
Besides being cheap to store and query, because you're only using 1-2 bands, you only capture the "low frequency" of the lighting signal, e.g. large changes in the light value get dropped, since it's just an approximation of the original signal. While this is normally bad, for 3d rendering, it's free denoising, giving you a smoother output image!
Coming at them from practical applications is one approach.
I've used spherical harmonics to model earth centric "surfaces" and fields - magnetics and gravity, etc.
You might think of them as a stacked sine and cosine waves (like a fourier transform breaking a continuous function into sin and cosine components) on a directional vector radiating outwards from the centre point of sphere.
You know if you take a metal plate bolted down at it's center, throw some salt on it and bow the edge with a violin bow. It makes stable patterns depending on the frequency of the tone playing
Now take this plate and turn it into a 3d sphere and that's spherical harmonica more or less. Electronsike to form them
I think of it as a good basis for functions on a perfectly spherical surface. Going down in levels of "l", you describe more and more details in terms of angular scale.
Thus, it's widely used in earth science and astrophysics, and anything that involves spherical symmetry (like a Hydrogen atom) -- in reality, nothing is a perfect sphere, but that's a very good approximation.
Or more generally a sum over all real values, f(x) = ∫ a(k) cos(kx) + b(k) sin(kx) dk, since signals can have fractional frequencies.
And in many cases the two sides are the same. Many operations in math and in ph operate on functions in such a way that they can distribute over their behavior on different frequencies, which is why Fourier transforms are really useful. For instance we hear different frequencies in different ways so if you Fourier-transform an audio waveform you can turn some frequencies up and others down (or drop them entirely, which is more-or-less what mp3 compression is).
This also works in 2d or 3d, where now you have frequencies in all three directions:
f(x,y,z) = f(0) + a_(100) cos(x) + a_(110) cos(x) cos(y) + a_(111) cos(x) cos(y) cos(z) + (all the sine terms and negative frequencies and everything else)
and this is useful in all kinds of ways also, e.g. taking Fourier transforms of a 2d image and then dropping the high frequency components that are hard to see is basically what JPEG compression is. As before it helps a lot that you can interact with the different frequency components separately.
But. Sometimes what you want is not the frequency in linear space (e.g. the frequency in x or y) but the frequency in angular coordinates: to ask "how many times does this variable change as you go around a circle in the (xy) plane?" Which is to say, you want to know the Fourier component in term like cos(ϕ), cos(2ϕ), sin(ϕ), etc. That looks like
Which is what we would call a "circular harmonic" (with ϕ=ϕ(x,y)=arctan(y/x)), each coefficient a_i is a function of (r). Unlike the linear Fourier transform, there can be no "fractional" frequencies---since ϕ=0 and ϕ=2pi are the same point, all the circular frequencies have to be integers.
When you try to do this in 3d using two angular coordinates ϕ and θ, it gets a lot funkier. Now you can't really write it as a simple series of the two frequencies separately; they kinda "step on each other", because a rotation in (xy) can be written as a sum of rotations in (yz) and (zx).
But you can do it in terms of a different, slightly stranger series. One variable L=0,1,2,3... will describe the "total" frequency on any plane, and another variable m=-L,-L+1,...0,...L-1,L describes how many rotations happen in your favorite choice of (xy) plane. m is allowed to range from -L to L because we have already said that L is the total frequency on any axis, so we just have to say whether they're happening in our chosen axis or not. So the series becomes
The functions Y_(L,m) (θ,ϕ) are the "spherical harmonics". They serve the role of sin(ωx) and cos(ωx) when you Fourier-expand a function in terms of spherical coordinates ϕ and θ.
There are lots of reasons that that's useful, but the case that is most well-known is that the state of an electron wave function in an atom can be indexed in terms of which spherical harmonic it's in, and only two electrons are allowed to be in each one (one spin up and one spin down, for much-more-bizarre reasons). So the spherical harmonic functions are also the shape of the various electron orbitals that you see in a chemistry textbook.
Spherical harmonics are essentially orthogonal basis functions on the sphere. They are popular in 3D graphics because you can very quickly compute the sphere integral over the product of two functions, as the dot product of their basis function coefficients(!). This can be used for real-time complex lighting on relatively modest hardware.
Love it, that's a fantastic image for these. As a musician intimately aware of how vibrating strings work, the vibrating bubble is a perfect analogy, it seems.
Any updates on the ultrasound brain imager project? I remember reading about that a couple of years ago but didn't see any follow-ups. It sounded extremely nifty.
If anyone is curious about applications - these can be used to approximate low-frequency components of a point's surroundings. They were used in Halo 3 to do real-time HDRI lighting and shadowing (see "Lighting and Material of Halo 3" from Siggraph 2008).
After the success of this method, there was a fairly long stretch of researchers looking for a better orthonormal basis (such as 2D Haar wavelents, as spherical harmonics is basically a Fourier Transform on a spherical basis). I think the pinnacle of this direction was Anisotropic Spherical Gaussians from 2013.
These days though, you'd at least use a neural net to learn a basis (or use a neural net to learn something else entirely). And of course, Gaussian Splats are the technique du jour for realtime relighting.
They are used also to characterize the statistical properties of fields over the sphere. A notable example is the pattern of hot/cold spots in the Cosmic Microwave Background Radiation (CMBR, [1]). They are distributed stochastically, and the best way to fit cosmological models against the measurements is to decompose the temperature/polarization fields into spherical harmonics and compute the power spectrum associated with each ℓ (which plays the role of a “spatial frequency” over the sky sphere).
[1] https://en.wikipedia.org/wiki/Cosmic_microwave_background
I wonder if Cartesian-basis multipole expansion could get the best of both worlds of GS and SH, as the former basis captures anisotropy but not detail while the latter captures detail but not anisotropy, whereas Cartesian multipole expansion naturally captures both right from the low orders, and is much easier to align to game worlds.
(to be precise, both can be captured by either if you include enough orders, what I mean is mainly how the information distribution scales with respect to each attribute)
Also, the age-old physics question: what is the minimum order of spherical harmonics required to approximate a cow?
Another application is Ambisonic sound spatialisation formats, where a finite set of signals corresponding to spherical harmonics are used to encode spatial sound fields. https://en.wikipedia.org/wiki/Ambisonics
in QM the spherical harmonics are more of a basis space for electronic state and not the actual electronic state, right? So does that mean there are other ways to think about electron configurations that satisfy Shrodinger etc?
For those of you curious about WHY these shapes look like the do (e.g. "why does l=0, m=0 have a donut in the middle of two lobes?"), this video from Münster University finally gave me an intuitive understanding of how these shapes arise.
https://youtu.be/Opufc3onVow
Are these related to (or exactly) the distribution of electron orbits?
Yes. These are solutions of the Schrodinger equation for the electron in the hydrogen atom.
Aren’t the spherical harmonics functions with domain S^2, the sphere? I think the solutions to the (time-independent) Schrödinger equation for an electron in a hydrogen atom are given by like, a product of a function of distance from the center with one of the spherical harmonics, or something like that?
you are correct. The Schrödinger equation for the hydrogen atoms in spherical coordinates demonstrates separability which allows you to separate the radial and angular coordinates. The radial term, which is most interesting due to the 1/r potential is typically a Laguerre polynomial. The angular term is 'free' from any potential is typically a spherical harmonic.
The spherical harmonics in general are typically derived as part of the solution to the Laplace equation in spherical coordinates. A bit of a semantic point (though perhaps the distinction is important) though, since the Laplace equation's angular dependence is identical to that of the Schrödinger equation for the hydrogen atom.
not quite as they are missing the radial dependence
Shameless plug, in 140 bytes https://www.dwitter.net/h/wikimedia
Is this a math function that fits in a tweet challenge?
Yes but It's just demos, doesn't have to be so purely Math.
They look too big. I expected all the l=1 to be like a cone near (0,0,0). And I expected one of them to be vertical instead of horizontal.
I'm not sure about the size but I think the shapes are correct. It's just very hard to examine them when they're rotating at such high speed.
Compare them to the image on this page:
https://en.m.wikipedia.org/wiki/Spherical_harmonics
Suggestion to OP: this would be much more useful if you add a button to stop the rotation.
... or a slider to control the rotation position or speed.
See also the “cubic harmonics”, which is an equivalent basis to spherical harmonics but they are real instead of complex, and also more natural to use in cubic crystals due to their symmetries.
I have also seen “triangular harmonics”, “zonal harmonics”, etc. in use in other materials.
Anyone know a good explanation of what spherical harmonics are?
Very very high level explanation that I'm trying to paraphrase from memory, so there's a good chance parts of it are wrong or use the wrong terminology:
A polynomial is a function like `f(x) = Ax^3 + Bx^2 + Cx^1 + Dx^0`
You can approximate most(all?) continuous functions using polynomials. The more "parts" (e.g. Bx^2 is one part) of the polynomial you have, the better you can represent a given function.
The previous example was a 1d function, but polynomials can be over any number of dimensions. E.g. a 3d polynomial `f(x, y, z)`.
Spherical harmonics are just a form of 3d polynomials, but with some special "parts" (called a basis function), with the amount of parts you have called a "band".
As for what they're good for, they're a fairly compact way of representing and filtering 3d signals.
In 3d rendering, they're really good at storing light hitting a point from different directions. You have an incoming ray of light on a unit sphere/hemisphere with origin x, y, z going towards the given point. You can then take your list of light rays with various (x,y,z) origins and (r,g,b) intensities, and then form a spherical harmonics approximation over it (basically a fitted 3d polynomial), which can be stored as just a few coefficients (A, B, C, D, etc...) using 1 or 2 bands, and cheaply computed (querying the light value r,g,b for a given ray) by plugging in the ray's x, y, z into the formula.
Besides being cheap to store and query, because you're only using 1-2 bands, you only capture the "low frequency" of the lighting signal, e.g. large changes in the light value get dropped, since it's just an approximation of the original signal. While this is normally bad, for 3d rendering, it's free denoising, giving you a smoother output image!
Coming at them from practical applications is one approach.
I've used spherical harmonics to model earth centric "surfaces" and fields - magnetics and gravity, etc.
You might think of them as a stacked sine and cosine waves (like a fourier transform breaking a continuous function into sin and cosine components) on a directional vector radiating outwards from the centre point of sphere.
https://geomag.bgs.ac.uk/research/modelling/IGRF.html
https://en.wikipedia.org/wiki/International_Geomagnetic_Refe...
https://en.wikipedia.org/wiki/World_Magnetic_Model
You know if you take a metal plate bolted down at it's center, throw some salt on it and bow the edge with a violin bow. It makes stable patterns depending on the frequency of the tone playing
Now take this plate and turn it into a 3d sphere and that's spherical harmonica more or less. Electronsike to form them
I think of it as a good basis for functions on a perfectly spherical surface. Going down in levels of "l", you describe more and more details in terms of angular scale.
Thus, it's widely used in earth science and astrophysics, and anything that involves spherical symmetry (like a Hydrogen atom) -- in reality, nothing is a perfect sphere, but that's a very good approximation.
Just for fun...
They are relatively easy to understand if you already understand Fourier transforms.
In a Fourier transform you can write some (suitably well-behaved) function f(x) as a sum of a bunch of sinusoids of different frequencies:
f(x) = a_0 + a_1 cos(x) + a_2 cos(2x) + ... + b_1 sin(x) + b_2 sin(2x) + ...
Or more generally a sum over all real values, f(x) = ∫ a(k) cos(kx) + b(k) sin(kx) dk, since signals can have fractional frequencies.
And in many cases the two sides are the same. Many operations in math and in ph operate on functions in such a way that they can distribute over their behavior on different frequencies, which is why Fourier transforms are really useful. For instance we hear different frequencies in different ways so if you Fourier-transform an audio waveform you can turn some frequencies up and others down (or drop them entirely, which is more-or-less what mp3 compression is).
This also works in 2d or 3d, where now you have frequencies in all three directions:
f(x,y,z) = f(0) + a_(100) cos(x) + a_(110) cos(x) cos(y) + a_(111) cos(x) cos(y) cos(z) + (all the sine terms and negative frequencies and everything else)
and this is useful in all kinds of ways also, e.g. taking Fourier transforms of a 2d image and then dropping the high frequency components that are hard to see is basically what JPEG compression is. As before it helps a lot that you can interact with the different frequency components separately.
But. Sometimes what you want is not the frequency in linear space (e.g. the frequency in x or y) but the frequency in angular coordinates: to ask "how many times does this variable change as you go around a circle in the (xy) plane?" Which is to say, you want to know the Fourier component in term like cos(ϕ), cos(2ϕ), sin(ϕ), etc. That looks like
f(x,y) = a_1 cos(ϕ) + a_2 cos(2ϕ) + b_1 sin(ϕ) + ...
Which is what we would call a "circular harmonic" (with ϕ=ϕ(x,y)=arctan(y/x)), each coefficient a_i is a function of (r). Unlike the linear Fourier transform, there can be no "fractional" frequencies---since ϕ=0 and ϕ=2pi are the same point, all the circular frequencies have to be integers.
When you try to do this in 3d using two angular coordinates ϕ and θ, it gets a lot funkier. Now you can't really write it as a simple series of the two frequencies separately; they kinda "step on each other", because a rotation in (xy) can be written as a sum of rotations in (yz) and (zx).
But you can do it in terms of a different, slightly stranger series. One variable L=0,1,2,3... will describe the "total" frequency on any plane, and another variable m=-L,-L+1,...0,...L-1,L describes how many rotations happen in your favorite choice of (xy) plane. m is allowed to range from -L to L because we have already said that L is the total frequency on any axis, so we just have to say whether they're happening in our chosen axis or not. So the series becomes
f(x,y,z) = a_(0, 0) + a_(1,-1) Y_(1,-1) + a_(1,0) Y_(1,0) + a_(1,1) Y_(1,1) + a_(2,-2) Y_(2,-2) + ... = ∑ a_(L,m) Y_(L,m) (θ,ϕ)
The functions Y_(L,m) (θ,ϕ) are the "spherical harmonics". They serve the role of sin(ωx) and cos(ωx) when you Fourier-expand a function in terms of spherical coordinates ϕ and θ.
There are lots of reasons that that's useful, but the case that is most well-known is that the state of an electron wave function in an atom can be indexed in terms of which spherical harmonic it's in, and only two electrons are allowed to be in each one (one spin up and one spin down, for much-more-bizarre reasons). So the spherical harmonic functions are also the shape of the various electron orbitals that you see in a chemistry textbook.
Thank you, this made it click for me.
Spherical harmonics are essentially orthogonal basis functions on the sphere. They are popular in 3D graphics because you can very quickly compute the sphere integral over the product of two functions, as the dot product of their basis function coefficients(!). This can be used for real-time complex lighting on relatively modest hardware.
I added an explanation to the page! Hope it's helpful.
a vibrating string make sine waves, a vibrating bubble make spherical harmonics.
Love it, that's a fantastic image for these. As a musician intimately aware of how vibrating strings work, the vibrating bubble is a perfect analogy, it seems.
They are just eigen states of the angular momentum operator.
Solutions to a certain differential equation that comes up in quantum mechanics and elsewhere.
Obligatory useful SH paper for 3d rendering: http://www.ppsloan.org/publications/StupidSH36.pdf
Also lots of other cool research around SH in rendering, e.g. the recent ZH3 paper.
Thanks for sharing this! Linked it on the website.
Stupid sexy harmonics.
Neat!! thanks for sharing
why does the page scroll when I drag a slider?
fixed! sorry about that, and thanks for the feedback
Thanks for sharing and making a fix.
Hmm, looking into this.
Any updates on the ultrasound brain imager project? I remember reading about that a couple of years ago but didn't see any follow-ups. It sounded extremely nifty.
im still working on ultrasound stuff, but specifically for BCI! https://news.ycombinator.com/item?id=42021450