§ 参考资料 共 8 条
球谐函数是拉普拉斯方程的球坐标系形式解的角度部分,它实际上形成了一个完备的正交基
拉普拉斯方程
场相关概念参考 场与 Nabla 算子
对于数量场 $f$,拉普拉斯(Laplace)算子定义如下:
$$ \Delta f=\nabla\cdot\nabla f=\frac{\partial^2f}{\partial x_1^2}+\frac{\partial^2f}{\partial x_2^2}+\cdots+\frac{\partial^2f}{\partial x_n^2} $$即先做计算梯度,然后再计算散度,得到的仍然是数量场。也可以写作 $\nabla^2f$
它衡量了数量场 $f$ 在某个点处相对于其周围点有多“小”:
- 当 $\Delta f$ 越小时,说明梯度更倾向于“汇入”,说明相邻的点更倾向于比它小
- 反之,当 $\Delta f$ 越大时,相邻的点更倾向于比它大
- 当 $\Delta f = 0$ 时,相邻的点倾向于比它大的与倾向于比它小的“对半开”
还有一个更容易理解的方法,参考流体力学,梯度可以理解为速度,速度的散度可以这么理解:
- 速度的散度越大,说明在这个时刻,这个点对应的“流体微团”更容易扩散出去
- 速度的散度越小,说明在这个时刻,这个点周围的“流体微团”更容易汇聚过来
拉普拉斯方程即:
$$ \Delta f=0 $$它描述了一种平衡状态,即在任意时刻,所有的“流体微团”正常流动,数量场的“形状”不会改变
球坐标形式及微分方程
球坐标系即:
$$ \begin{cases} x=r\sin\theta\cos\varphi \\ y=r\sin\theta\sin\varphi \\ z=r\cos\theta \end{cases} $$代入拉普拉斯方程得到:
$$ \Delta f=\frac{1}{r^2}\frac{\partial}{\partial r}\left(r^2\frac{\partial f}{\partial r}\right)+\frac{1}{r^2\sin\theta}\frac{\partial}{\partial\theta}\left(\sin\theta\frac{\partial f}{\partial\theta}\right)+\frac{1}{r^2\sin^2\theta}\frac{\partial^2 f}{\partial\varphi^2}=0 $$通过分离变量法,可以得到一组形式解,它们实际上是正交完备的,可以张出整个解空间
设 $f(r,\theta,\varphi)=R(r)Y(\theta,\varphi)=R(r)\Theta(\theta)\Phi(\varphi)$,得到三个微分方程:
$$ \begin{cases} \frac{\mathrm d}{\mathrm d r}\left(r^2\frac{\mathrm d R}{\mathrm d r}\right)-l(l+1)R=0 \\ \frac{\mathrm d^2\Phi}{\mathrm d\varphi^2}+m\Phi=0 \\ \sin\theta\frac{\mathrm d}{\mathrm d\theta}\left(\sin\theta\frac{\mathrm d\Theta}{\mathrm d\theta}\right)-[l(l+1)\sin^2\theta+m]\Theta=0 \end{cases} $$其中,$l$ 和 $m$ 都是分离常数
接下来就是求解这三个微分方程
勒让德微分⽅程
第三个微分方程是连带勒让德方程,即:
$$ \sin\theta\frac{\mathrm d}{\mathrm d\theta}\left(\sin\theta\frac{\mathrm d\Theta}{\mathrm d\theta}\right)-[l(l+1)\sin^2\theta+m]\Theta=0 $$令 $x=\cos\theta$,$y(x)=\Theta(\theta)$,那么:
$$ \begin{aligned} \frac{\mathrm d\Theta}{\mathrm d\theta}&=-\sin\theta\frac{\mathrm d\Theta}{\mathrm dx} \\ \frac{\mathrm d^2\Theta}{\mathrm d\theta^2}&=-\cos\theta\frac{\mathrm d\Theta}{\mathrm dx}+\sin^2\theta\frac{\mathrm d^2\Theta}{\mathrm dx^2} \end{aligned} $$代入得到:
$$ (1-x^2)\frac{\mathrm d^2y}{\mathrm dx^2}-2x\frac{\mathrm dy}{\mathrm dx}+\left[l(l+1)-\frac{m^2}{1-x^2}\right]y=0 $$当 $m=0$ 时,可以化成:
$$ \begin{aligned} \frac{1}{\sin\theta}\frac{\mathrm d}{\mathrm d\theta}\left(\sin\theta\frac{\mathrm d\Theta}{\mathrm d\theta}\right)-l(l+1)\Theta&=0 \\ (1-x^2)\frac{\mathrm d^2y}{\mathrm dx^2}-2x\frac{\mathrm dy}{\mathrm dx}+l(l+1)y&=0 \end{aligned} $$这两个式子都可以称为勒让德微分方程
勒让德多项式与第二类勒让德函数
假设勒让德方程有幂级数解,即:
$$ y=\sum_{k=0}^{\infty}C_kx^k=C_0+C_1x+C_2x^2+\cdots $$其中,$C_k$ 是系数,代入化简后得到这样的式子:
$$ \sum_{k=0}^{\infty}[(k+2)(k+1)C_{k+2}-(k-l)(k+l+1)C_k]x^k=0 $$所以:
$$ C_{k+2}=\frac{(k-l)(k+l+1)}{(k+2)(k+1)}C_k $$这是一个双间隔递推式子,我们将奇偶分开,上面的 $y(x)$ 可以化成一个只带 $C_0$ 和 $C_1$ 的式子:
$$ y=C_0y_0+C_1y_1 $$其中:
$$ \begin{aligned} y_0&=1-\frac{l(l+1)}{2!}x^2+\frac{(l-2)l(l+1)(l+3)}{4!}x^4-\frac{(l-4)(l-2)l(l+1)(l+3)(l+5)}{6!}x^6+\cdots \\ y_1&=x-\frac{(l-1)(l+2)}{3!}x^3+\frac{(l-3)(l-1)(l+2)(l+4)}{5!}x^3-\frac{(l-5)(l-3)(l-1)(l+2)(l+4)(l+6)}{7!}x^7+\cdots \end{aligned} $$我们发现,当 $(l-d)$ 出现在第 $i$ 项时,之后的每一项都会出现 $(l-d)$,所以如果我们让 $l=d$ 那么可以在第 $i$ 项“截断”它让它变成一个多项式
然而我们只能“截断”其中一个,被截断的那个称为勒让德多项式,或者第一类勒让德函数,记为 $P_l(x)$;没被截断的称为第二类勒让德函数,记为 $Q_l(x)$
假设我们截断后多项式的最高项系数为 $C_l$,当我们取
$$ C_l=\frac{(2l)!}{2^l(l!)^2} $$时,勒让德多项式呈现最简洁的形式,即:
$$ P_l(x)=\frac{1}{2^l}\sum_{m=0}^{M}(-1)^m\frac{(2l-2m)!}{m!(l-m)!(l-2m)!}x^{l-2m} $$其中:
$$ M=\begin{cases} \frac{l}{2} & l=0,2,4,... \\ \frac{l-1}{2} & l=1,3,5,... \end{cases} $$勒让德方程的通解是 $P_l(x)$ 和 $Q_l(x)$ 的线性组合,即:
$$ y=AP_l(x)+BQ_l(x) $$勒让德多项式的性质
递推公式
常⻅的勒让德多项式递推公式如下:
$$ \begin{gather*} (n+1)P_{n+1}(x)=(2n+1)xP_n(x)-nP_{n-1}(x) \quad &n=1,2,3,... \\ P_n(x)=P'_{n+1}(x)-2xP'_n(x)+P'_{n-1}(x) \quad &n=1,2,3,... \\ xP'_n(x)-P'_{n-1}(x)=nP'_{n}(x) \quad &n=1,2,3,... \\ P'_{n+1}(x)-P'_{n-1}(x)=(2n+1)P_n(x) \quad &n=1,2,3,... \\ nP'_{n+1}(x)+(n+1)P'_{n-1}(x)=(2n+1)xP'_n(x) \quad &n=1,2,3,... \\ P'_{n+1}(x)=(n+1)P_n(x)+xP'_{n}(x) \quad &n=0,1,2,... \end{gather*} $$正交完备性与模
勒让德多项式满⾜正交性:
$$ \int_{-1}^1P_l(x)P_m(x)\mathrm dx=0\quad (l\ne m) $$满足完备性:若 $f(x)$ 在 $[-1,1]$ 是分段光滑的,那么 $f(x)$ 可以按照勒让德多项式级数展开,即:
$$ f(x)=\sum_{l=0}^{\infty}C_lP_l(x) $$其中,展开系数 $C_l$ 为:
$$ C_l=\frac{2l+1}{2}\int_{-1}^1P_l(x)f(x)\mathrm dx $$勒让德多项式的模为:
$$ I_l=\int_{-1}^1P^2_l(x)\mathrm dx=\frac{2}{2l+1} $$微分表示——罗德⾥格斯公式
$l$ 阶勒让德多项式 $P_l(x)$ 的微分表示称为罗德里格斯公式:
$$ P_l(x)=\frac{1}{2^ll!}\frac{\mathrm d^l}{\mathrm dx^l}(x^2-1)^l $$连带勒让德多项式
前面提到,连带勒让德方程是下面的式子:
$$ \begin{aligned} \sin\theta\frac{\mathrm d}{\mathrm d\theta}\left(\sin\theta\frac{\mathrm d\Theta}{\mathrm d\theta}\right)-[l(l+1)\sin^2\theta+m]\Theta&=0 \\ (1-x^2)\frac{\mathrm d^2y}{\mathrm dx^2}-2x\frac{\mathrm dy}{\mathrm dx}+\left[l(l+1)-\frac{m^2}{1-x^2}\right]y&=0 \end{aligned} $$利用勒让德多项式:
$$ (1-x^2)\frac{\mathrm d^2P_l(x)}{\mathrm dx^2}-2x\frac{\mathrm dP_l(x)}{\mathrm dx}+l(l+1)P_l(x)=0 $$对它两边求 $m$ 阶导数,得到:
$$ (1-x^2)P_l^{(m+2)}(x)-2(m+1)xP_l^{(m+1)}(x)+[l(l+1)-m(m+1)]P_l^{(m)}=0 $$其中,由于 $P_l(x)$ 是 $l$ 阶多项式,所以求导次数不能超过 $l$,即 $m\le l$
这个式子也可以写成:
$$ (1-x^2)\frac{\mathrm d^2P_l^{(m)}(x)}{\mathrm dx^2}-2(m+1)x\frac{\mathrm dP_l^{(m)}(x)}{\mathrm dx}+[l(l+1)-m(m+1)]P_l^{(m)}=0 $$如果令:
$$ w(x)=(-1)^m(1-x^2)^\frac{m}{2}P_l^{(m)}(x) $$那么代入可以得到:
$$ (1-x^2)\frac{\mathrm d^2w}{\mathrm dx^2}-2x\frac{\mathrm dw}{\mathrm dx}+\left[l(l+1)-\frac{m^2}{1-x^2}\right]w=0 $$这正是连带勒让德方程,所以可以得到连带勒让德方程的解为:
$$ P_l^m(x)=(-1)^m(1-x^2)^\frac{m}{2}P_l^{(m)}(x) $$$P_l^m(x)$ 称为 $m$ 阶连带勒让德函数
由于勒让德方程中的 $m^2$ 的 $m$ 添加负号不影响,利用罗德里格斯公式,可以得到:
$$ P_l^m(x)=(-1)^m\frac{(l+m)!}{(l-m)!}P_l^{-m}(x) $$当 $m=0$ 时,$P_l^m(x)=P_l(x)$,即勒让德多项式
所以,连带勒让德方程的解为:
$$ \begin{aligned} \Theta(\theta)&=P_l^m(\cos\theta) \\ y(x)&=P_l^m(x) \end{aligned} $$连带勒让德多项式的性质
正交完备性与模
连带勒让德多项式满足正交性:
$$ \int_{-1}^1P_l^m(x)P_k^m(x)\mathrm dx=0\quad (l\ne k) $$满足完备性:若 $f(x)$ 在 $[-1,1]$ 是分段光滑的,那么 $f(x)$ 可以按照展开成连带勒让德级数,即:
$$ f(x)=\sum_{l=m}^{\infty}C_l^mP_l^m(x) $$其中,连带勒让德系数 $C_l^m$ 为:
$$ C_l^m=\frac{2l+1}{2}\frac{(l+m)!}{(l-m)!}\int_{-1}^1P_l^m(x)f(x)\mathrm dx $$它的模为:
$$ \int_{-1}^1[P_l^m(x)]^2\mathrm dx=\frac{2}{2l+1}\frac{(l+m)!}{(l-m)!} $$微分方程的求解
第二个微分方程求解
第二个微分方程即:
$$ \frac{\mathrm d^2\Phi}{\mathrm d\varphi^2}+m\Phi=0 $$它的通解是:
$$ \Phi(\varphi)=Ae^{i\sqrt{m}\varphi}+Be^{-i\sqrt{m}\varphi} $$其中,$\Phi(\varphi)$ 满足周期性,即 $\Phi(\varphi)=\Phi(\varphi+2\pi)$,代入得到:
$$ Ae^{i\sqrt{m}\varphi}\left(e^{i2\sqrt{m}\pi}-1\right)+Be^{-i\sqrt{m}\varphi}\left(e^{-i2\sqrt{m}\pi}-1\right)=0 $$那么一定有:
$$ e^{i2\sqrt{m}\pi}=e^{-i2\sqrt{m}\pi}=1 $$所以,$m=z^2$,其中 $z\in\mathbb Z$,代入并且仍然用 $m$ 表示,得到:
$$ \Phi(\varphi)=Ae^{im\varphi}+Be^{-im\varphi} $$其中,$m\in\mathbb Z^+$
它有等价的表达式,即:
$$ \Phi(\varphi)=Ae^{im\varphi} $$其中,$m\in\mathbb Z$
第三个微分方程求解
第三个微分方程为:
$$ \sin\theta\frac{\mathrm d}{\mathrm d\theta}\left(\sin\theta\frac{\mathrm d\Theta}{\mathrm d\theta}\right)-[l(l+1)\sin^2\theta+m]\Theta=0 $$前面提到它就是连带勒让德方程,解为:
$$ \Theta(\theta)=P_l^m(\cos\theta) $$角向解——球谐函数及归一化形式
角向解就是第二个和第三个微分方程解的乘积,即:
$$ Y_l^m(\theta,\varphi)=A_l^mP_l^m(\cos\theta)e^{im\varphi} $$其中,$l=0,1,2,...$,$m=0,\pm 1,\pm 2,...,\pm l$
常数 $A_l^m$ 在归一化时算出来是这样的:
$$ A_l^m=\sqrt{\frac{2l+1}{4\pi}\frac{(l-\vert m\vert)!}{(l+\vert m\vert)!}} $$球谐函数的实数形式表示为:
$$ Y_l^m(\theta,\varphi)=\begin{cases} \sqrt{2}A_l^m\cos(m\varphi)P_l^m(\cos\theta) & m>0 \\ \sqrt{2}A_l^m\sin(-m\varphi)P_l^{-m}(\cos\theta) & m<0 \\ A_l^0P_l^m(\cos\theta) & m=0 \end{cases} $$其中,$l=0,1,2,...$,$m=0,\pm 1,\pm 2,...,\pm l$
球谐函数的性质
正交完备性与模
归一化的球谐函数满足正交性,即:
$$ \iint_SY_l^m(\theta,\varphi)Y_n^k(\theta,\varphi)\sin\theta\mathrm d\theta\mathrm d\varphi=0 \quad l\ne n \text{ or } m\ne k $$归一化的球谐函数的模长为 $1$,即:
$$ \iint_S[Y_l^m(\theta,\varphi)]^2\sin\theta\mathrm d\theta\mathrm d\varphi=1 $$满足完备性:如果函数 $f(\theta,\varphi)$ 定义在 $0\lt\varphi\lt 2\pi$,$0\lt \theta\lt\pi$,假设它是 $\varphi$ 的周期函数(周期为 $2\pi$),这样能展开成球谐函数的级数:
$$ f(\theta,\varphi)=\sum_{l=0}^{\infty}\sum_{m=-l}^{l}C_l^mY_l^m(\theta,\varphi) $$其中,球谐系数 $C_l^m$ 为:
$$ C_l^m=\iint_SY_l^m(\theta,\varphi)f(\theta,\varphi)\sin\theta\mathrm d\theta\mathrm d\varphi $$旋转不变性
球谐函数满足旋转不变性,假设我们有一个旋转变换 $R$,经过变换后球谐函数 $Y_l^m(R(\theta,\varphi))$ 可以表示为同阶的其他球谐函数的线性组合,而与其他阶无关,即:
$$ Y_l^m(R(\theta,\varphi))=\sum_{k=-l}^{l}A_l^{mk}Y_l^k(\theta,\varphi) $$那么,假设我们有:
$$ f(\theta,\varphi)=\sum_{l=0}^{\infty}\sum_{m=-l}^{l}C_l^mY_l^m(\theta,\varphi) $$在经过旋转变换之后:
$$ f(R(\theta,\varphi))=\sum_{l=0}^{\infty}\sum_{m=-l}^{l}B_l^mY_l^m(\theta,\varphi) $$我们需要求出 $B_l^m$ 与 $C_l^m$ 的关系:
$$ \begin{aligned} f(R(\theta,\varphi))&=\sum_{l=0}^{\infty}\sum_{m=-l}^{l}C_l^mY_l^m(R(\theta,\varphi)) \\ &=\sum_{l=0}^{\infty}\sum_{m=-l}^{l}C_l^m\sum_{k=-l}^{l}A_l^{mk}Y_l^k(\theta,\varphi) \\ &=\sum_{l=0}^{\infty}\sum_{k=-l}^{l}Y_l^k(\theta,\varphi)\sum_{m=-l}^{l}A_l^{mk}C_l^m \\ &=\sum_{l=0}^{\infty}\sum_{m=-l}^{l}\left(\sum_{k=-l}^{l}A_l^{mk}C_l^k\right)Y_l^m(\theta,\varphi) \end{aligned} $$所以有:
$$ B_l^m=\sum_{k=-l}^{l}A_l^{mk}C_l^k $$所以,我们只需要求出所有的 $A_l^{mk}$ 先把它们存下来,就可以进行低成本的旋转操作
先化成矩阵形式如下:
$$ \begin{bmatrix} B_l^{-l} \\ \vdots \\ B_l^l \end{bmatrix}=\begin{bmatrix} A_l^{1,-l} & \cdots & A_l^{1,l} \\ \vdots & \ddots & \vdots \\ A_l^{l,-l} & \cdots & A_l^{l,l} \end{bmatrix} \begin{bmatrix} C_l^{-l} \\ \vdots \\ C_l^m \end{bmatrix} $$表示成:
$$ \boldsymbol B_l=\boldsymbol A_l\boldsymbol C_l $$通过 Wigner D 矩阵可以得到 $\boldsymbol A_l$
3DGS 中的球谐函数
3DGS 中,通过球谐函数来对环境光进行“压缩”,得到颜色信息
在高斯椭球中,表面的颜色分布的每个通道可以看成一个函数 $C_i(\theta,\varphi)$,它可以用球谐函数进行展开,取前 $L$ 阶:
$$ C_i(\theta,\varphi)=\sum_{l=0}^{L}\sum_{m=-l}^lA_l^mY_l^m(\theta,\varphi) $$这样,颜色信息就被压缩成了 $A_l^m$ 这 $(L+1)^2$ 个参数,这就是 SH 系数,当 SH 系数用的越多,表达能力就越强,跟原始的函数就越接近