Spherical Harmonics: Difference between revisions
No edit summary |
|||
(14 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Spherical Harmonics are a set of orthonormal basis functions | Spherical Harmonics are a set of orthonormal basis functions defined over a sphere.<br> | ||
<math>f: (\phi, \theta) \mapsto f(\phi, \theta) \in \mathbb{R}</math> | |||
==Background== | ==Background== | ||
===Harmonic Function=== | ===Harmonic Function=== | ||
{{main | Wikipedia: Harmonic_function}} | |||
A function <math>f: \mathbb{R}^n \rightarrow \mathbb{R}</math> is a harmonic function if it satisfies Laplace's equation: | A function <math>f: \mathbb{R}^n \rightarrow \mathbb{R}</math> is a harmonic function if it satisfies Laplace's equation: | ||
* The Laplacian (or trace of the hessian) is zero. | * The Laplacian (or trace of the hessian) is zero. | ||
* <math>\Delta f = \frac{\partial^2f}{\partial x_1^2} + \frac{\partial^2f}{\partial x_2^2} + \cdots + \frac{\partial^2f}{\partial x_n^2} = 0</math> | * <math>\Delta f = \frac{\partial^2f}{\partial x_1^2} + \frac{\partial^2f}{\partial x_2^2} + \cdots + \frac{\partial^2f}{\partial x_n^2} = 0</math> | ||
===Associated Legendre Polynomials=== | |||
{{main | Wikipedia:Associated Legendre polynomials}} | |||
Associated Legendre Polynomials are a set of orthogonal polynomials defined over \([-1, 1]\). | |||
Each is represented as \(P^m_l\) where \(0 \leq m \leq l\). | |||
I.e. | |||
\(P^0_0(x)\) | |||
\(P^0_1(x), P^1_1(x)\) | |||
\(P^0_2(x), P^1_2(x), P^2_2(x)\) | |||
The following 3 recurrance relations define the associated legendre polynomials: | |||
# <math>(l-m)P_l^m = x(2l-1)P_{l-1}^m - (l+1-1) P_{l-2}^m</math> | |||
# <math>P_m^m = (-1)^m(2m-1)!! (1-x^2)^{m/2}</math> | |||
# <math>P^m_{m+1} = x(2m+1)P^m_m</math> | |||
Notes: | |||
* Here <math> | |||
(x)!! = | |||
\begin{cases} | |||
(x)*(x-2)*...*(1) & x\text{ odd}\\ | |||
(x)*(x-2)*...*(2) & x\text{ even} | |||
\end{cases} | |||
</math> | |||
==Definition== | ==Definition== | ||
Spherical Harmonics are a set of orthonormal basis functions defined on the sphere. | Spherical Harmonics are a set of orthonormal basis functions defined on the sphere. | ||
Below are some explicit formulas for Laplace spherical harmonics stolen from <ref name="stupidsh">Peter-Pike Sloan, [http://www.ppsloan.org/publications/StupidSH36.pdf Stupid Spherical Harmonics (SH) Tricks]</ref> | Below are some explicit formulas for Laplace spherical harmonics stolen from Sloan<ref name="stupidsh">Peter-Pike Sloan, [http://www.ppsloan.org/publications/StupidSH36.pdf Stupid Spherical Harmonics (SH) Tricks]</ref>. You can also find alternative equations in DLMF<ref name="dlmf">Digital Library of Mathematical Functions, 14.30. [https://dlmf.nist.gov/14.30 https://dlmf.nist.gov/14.30]</ref>. | ||
There are <math>2l+1</math> functions for each band. | |||
* <math>Y_l^m(\theta, \varphi) = K_l^m e^{i m \varphi} P_l^{|m|} \cos(\theta)</math> for <math>-l \leq m \leq l</math> | |||
: where <math>P_l^m</math> are the associated Legendre Polynomials | |||
: and <math>K_l^m = \sqrt{\frac{(2l+1)(l-|m|)!}{4 \pi (l+|m|)!}}</math> | |||
: l is the band, m is the function | |||
For a real valued basis, | |||
* <math>y_l^m = \begin{cases} | |||
\sqrt{2}\operatorname{Re}(Y_l^m) & m > 0\\ | |||
\sqrt{2}\operatorname{Im}(Y_l^m) & m < 0\\ | |||
Y_l^0 & m = 0 | |||
\end{cases} | |||
= \begin{cases} | |||
\sqrt{2} K_l^m \cos(m \varphi) P_l^m(\cos\theta) & m > 0\\ | |||
\sqrt{2} K_l^m \sin(|m| \varphi) P_l^{|m|}(\cos\theta) & m < 0\\ | |||
K_l^0 P_l^0 (\cos \theta) & m = 0\\ | |||
\end{cases}</math> | |||
==Properties== | |||
Copied from Green<ref name="green2003lighting">Robin Green (2003). ''Spherical Harmonic Lighting'' URL: [http://silviojemma.com/public/papers/lighting/spherical-harmonic-lighting.pdf http://silviojemma.com/public/papers/lighting/spherical-harmonic-lighting.pdf]</ref> | |||
* Orthonormal | |||
* Rotationally Invariant | |||
* Integration of two spherical harmonic functions is a dot product of their coefficients | |||
{{hidden | Proof| | |||
This follows from being orthonormal:<br> | |||
<math> | |||
\begin{align} | |||
\int_{S}\tilde{L}(s)\tilde{t}(s)ds &= \int_{S}\left(\sum_i L_i y_i(s)\right)\left(\sum_j t_j y_j(s)\right)ds \\ | |||
&= \sum_i\sum_j L_i t_j \int_{S} y_i(s) y_j(s)ds \\ | |||
&= \sum_i^{n^2} L_i t_i \int_{S}( y_i(s) y_i(s))ds\\ | |||
&\qquad\text{ because orthogonal}\\ | |||
&= \sum_i^{n^2} L_i t_i\\ | |||
&\qquad\text{ because orthonormal} | |||
\end{align} | |||
</math> | |||
}} | |||
==Operations== | |||
===Addition=== | |||
Just add the coefficients | |||
===Multiplication=== | |||
===Rotation=== | |||
==Visualizations== | |||
Below are distorted sphere visualizations where the radius corresponds to the value at each point. | |||
* [https://www.shadertoy.com/view/lsfXWH iq's 0-3] | |||
* [https://www.shadertoy.com/view/4dsyW8 Ruofei's 0-4] | |||
==Applications== | ==Applications== | ||
===Lighting=== | |||
See Green<ref name="green2003lighting></ref>. | |||
===Saliency=== | ===Saliency=== | ||
* [http://duruofei.com/Research/SphericalHarmonics Ruofei's Website] | * [http://duruofei.com/Research/SphericalHarmonics Ruofei's Website] | ||
Line 18: | Line 97: | ||
==Resources== | ==Resources== | ||
* [http://www.ppsloan.org/publications/StupidSH36.pdf Stupid SH] | * [http://www.ppsloan.org/publications/StupidSH36.pdf Stupid SH by Peter-Pike Sloan] | ||
* [ | * [http://silviojemma.com/public/papers/lighting/spherical-harmonic-lighting.pdf Spherical Harmonics Lighting by Robin Green] | ||
* [[Wikipedia:Spherical Harmonics]] | |||
==References== | ==References== | ||
<references /> | <references /> |
Latest revision as of 17:02, 10 June 2022
Spherical Harmonics are a set of orthonormal basis functions defined over a sphere.
\(\displaystyle f: (\phi, \theta) \mapsto f(\phi, \theta) \in \mathbb{R}\)
Background
Harmonic Function
A function \(\displaystyle f: \mathbb{R}^n \rightarrow \mathbb{R}\) is a harmonic function if it satisfies Laplace's equation:
- The Laplacian (or trace of the hessian) is zero.
- \(\displaystyle \Delta f = \frac{\partial^2f}{\partial x_1^2} + \frac{\partial^2f}{\partial x_2^2} + \cdots + \frac{\partial^2f}{\partial x_n^2} = 0\)
Associated Legendre Polynomials
Associated Legendre Polynomials are a set of orthogonal polynomials defined over \([-1, 1]\).
Each is represented as \(P^m_l\) where \(0 \leq m \leq l\).
I.e.
\(P^0_0(x)\)
\(P^0_1(x), P^1_1(x)\)
\(P^0_2(x), P^1_2(x), P^2_2(x)\)
The following 3 recurrance relations define the associated legendre polynomials:
- \(\displaystyle (l-m)P_l^m = x(2l-1)P_{l-1}^m - (l+1-1) P_{l-2}^m\)
- \(\displaystyle P_m^m = (-1)^m(2m-1)!! (1-x^2)^{m/2}\)
- \(\displaystyle P^m_{m+1} = x(2m+1)P^m_m\)
Notes:
- Here \(\displaystyle (x)!! = \begin{cases} (x)*(x-2)*...*(1) & x\text{ odd}\\ (x)*(x-2)*...*(2) & x\text{ even} \end{cases} \)
Definition
Spherical Harmonics are a set of orthonormal basis functions defined on the sphere.
Below are some explicit formulas for Laplace spherical harmonics stolen from Sloan[1]. You can also find alternative equations in DLMF[2].
There are \(\displaystyle 2l+1\) functions for each band.
- \(\displaystyle Y_l^m(\theta, \varphi) = K_l^m e^{i m \varphi} P_l^{|m|} \cos(\theta)\) for \(\displaystyle -l \leq m \leq l\)
- where \(\displaystyle P_l^m\) are the associated Legendre Polynomials
- and \(\displaystyle K_l^m = \sqrt{\frac{(2l+1)(l-|m|)!}{4 \pi (l+|m|)!}}\)
- l is the band, m is the function
For a real valued basis,
- \(\displaystyle y_l^m = \begin{cases} \sqrt{2}\operatorname{Re}(Y_l^m) & m \gt 0\\ \sqrt{2}\operatorname{Im}(Y_l^m) & m \lt 0\\ Y_l^0 & m = 0 \end{cases} = \begin{cases} \sqrt{2} K_l^m \cos(m \varphi) P_l^m(\cos\theta) & m \gt 0\\ \sqrt{2} K_l^m \sin(|m| \varphi) P_l^{|m|}(\cos\theta) & m \lt 0\\ K_l^0 P_l^0 (\cos \theta) & m = 0\\ \end{cases}\)
Properties
Copied from Green[3]
- Orthonormal
- Rotationally Invariant
- Integration of two spherical harmonic functions is a dot product of their coefficients
This follows from being orthonormal:
\(\displaystyle
\begin{align}
\int_{S}\tilde{L}(s)\tilde{t}(s)ds &= \int_{S}\left(\sum_i L_i y_i(s)\right)\left(\sum_j t_j y_j(s)\right)ds \\
&= \sum_i\sum_j L_i t_j \int_{S} y_i(s) y_j(s)ds \\
&= \sum_i^{n^2} L_i t_i \int_{S}( y_i(s) y_i(s))ds\\
&\qquad\text{ because orthogonal}\\
&= \sum_i^{n^2} L_i t_i\\
&\qquad\text{ because orthonormal}
\end{align}
\)
Operations
Addition
Just add the coefficients
Multiplication
Rotation
Visualizations
Below are distorted sphere visualizations where the radius corresponds to the value at each point.
Applications
Lighting
See Green[3].
Saliency
Ruofei did a project on Saliency using Spherical Harmonics as part of his PhD dissertation.
Resources
- Stupid SH by Peter-Pike Sloan
- Spherical Harmonics Lighting by Robin Green
- Wikipedia:Spherical Harmonics
References
- ↑ Peter-Pike Sloan, Stupid Spherical Harmonics (SH) Tricks
- ↑ Digital Library of Mathematical Functions, 14.30. https://dlmf.nist.gov/14.30
- ↑ 3.0 3.1 Robin Green (2003). Spherical Harmonic Lighting URL: http://silviojemma.com/public/papers/lighting/spherical-harmonic-lighting.pdf