傅里叶级数推导与函数投影到正交基函数的类推
在进行全局光照球谐积分时,会遇到使用勒让德正交基函数对光照函数进行逼近的情形。其中对勒让德基函数的系数的计算即为原函数的投影。此文对其投影的数学处理方式进行分析记录
1. 傅里叶级数
在描述光照函数逼近使用勒让德基函数时,会将之与更为熟悉的傅里叶级数进行类比。宏观上来说,两者的工作内容是类似的,都是将原函数进行分解,用其基函数进行线性叠加对原函数进行近似。因此由傅里叶为例进行分析,后面再类推到其他正交基函数的投影计算。
傅里叶公式为:
$$f(x) = A_0 + \sum\limits_{n=1}^\infty[a_n\cos(n\omega t) +b_n\sin(n\omega t)] \tag{1} $$
a. 正交性
将原始函数分解为了两组三角函数。三角函数是具备正交性的,即有:
$$
\begin{align*}
\int_{-\pi}^{\pi}\cos{nx\,dx} &=0\qquad(n=1,2,3,...) \tag{2.1} \\
\int_{-\pi}^{\pi}\sin{nx\,dx} &=0\qquad(n=1,2,3,...) \tag{2.2} \\
\int_{-\pi}^{\pi}\sin{kx\cdot \cos{nx}\, dx} &=0\qquad(k,n=1,2,3,...;k \neq n) \tag{2.3} \\
\int_{-\pi}^{\pi}\cos{kx\cdot \cos{nx}\, dx} &=0\qquad(k,n=1,2,3,...;k \neq n) \tag{2.4} \\
\int_{-\pi}^{\pi}\sin{kx\cdot \sin{nx}\, dx} &=0\qquad(k,n=1,2,3,...;k \neq n) \tag{2.5} \\
\end{align*}
$$
下面以\((2.4)\)为例,求其定积分,验证其正交正确性
$$
\begin{align*}
\cos{kx\cdot}\cos{nx} &= \frac{1}{2}[\cos{(k+n)x} + \cos{(k-n)x}] \\
\sin{kx\cdot}\sin{nx} &= \frac{1}{2}[\cos{(k+n)x} - \cos{(k-n)x}] \\
\sin{kx\cdot}\cos{nx} &= \frac{1}{2}[\sin{(k+n)x} + \sin{(k-n)x}] \\
\\
when \qquad k\neq n:\\
\int_{-\pi}^{\pi}\cos{kx\cdot}\cos{nx\;dx} &= \frac{1}{2}\int_{-\pi}^{\pi}[\cos{(k+n)x} + \cos{(k-n)x}]dx\\
&=\frac{1}{2}[\frac{\sin{(k+n)x}}{k+n} +\frac{\sin{(k-n)x}}{k-n}]|_{-\pi}^{\pi}\\
&=\frac{1}{2}[0+0]=0
\end{align*}
$$
其他等式也可逐一验证
b. 系数推导
大体思路为:将\((1)\) 等号的左右两边分别积分,利用三角函数的正交性,将其积分为0,去掉杂项,而后解出其系数
对\((1)\) 在\([-\pi,\pi]\)积分,得:
$$
\begin{split}
\int_{-\pi}^{\pi} &= \int_{-\pi}^{\pi}A_0 + \int_{-\pi}^{\pi}{\sum\limits_{n=1}^{\infty}[a_n\cos{n\omega t} + b_n\sin{n\omega t}]}\\
&=\int_{-\pi}^{\pi}A_0 +0=A_0|_{-\pi}^{\pi}\\
&=(\pi-(-\pi))A_0\\
&=2\pi A_0
\end{split}
$$
解得:\(A_0 = \frac{1}{2\pi}\int_{-\pi}^{\pi}f(t)\)
求\(a_n\) 项和\(b_n\) 项,方法是相同的,现在\((1)\)等号两边,分别乘上\(\cos{k\omega t}\) 项后,再积分
$$
\begin{align}
\int_{-\pi}^{\pi}f(t)\cdot\cos{k\omega t}\,dt &= A_0\int_{-\pi}^{\pi}\cos{k\omega t}\,dt+\sum_{n=1}^{\infty}[a_n\int_{-\pi}^{\pi}\cos{n\omega t}\cdot\cos{k\omega t}\;dt] +b_n\int_{-\pi}^{\pi}\sin{n\omega t}\cdot \cos{k\omega t\;dt}] \tag{3}\\
\end{align}
$$
根据三角函数的正交性,仅有\(k=n\)时\(\cos{k\omega t\cdot\cos{n\omega t}\;dt}\)积分项不为0,其余项均为0,所以有
$$
\begin{align}
\int_{-\pi}^{\pi}\cos(k\omega t)\cdot f(t) &= a_n\sum_{n=1}^{\infty}\int_{-\pi}^{\pi}\cos(k\omega t)\cdot \cos(n\omega t)dt\\
&=a_n\int_{-\pi}^{\pi}\cos^2(n\omega t)dt\\
&=\frac{a_n}{2}\int_{-\pi}^{\pi}(1+\cos{2n\omega t})dt \quad(半角公式)\\
&=\frac{a_n}{2}(\int_{-\pi}^{\pi}1dt+\int_{-\pi}^{\pi}cos2n\omega t\;dt)\\
&=\frac{a_n}{2}\cdot 2\pi \\
&=a_n\pi
\end{align}
$$
因此解得:
\(a_n=\frac{1}{\pi}\int_{-\pi}^{\pi}\cos(n\omega t)\cdot f(t)dt \quad (k=n)\)
同理可以乘入\(\sin(k\omega t)\)求出\(b_n\)
2.球谐函数拟合
光照函数拟合等式为:\(L(t) = \sum\limits_{i=0}^{\infty}c_iB_i\)
其中\(B_i\) 为基函数,\(c_i\)为对应基函数的系数。其中基函数是已知的,而我们主要是需要求出对应的\(c_i\),在渲染中,通常使用的是线性基函数中的勒让德基正交多项式。勒让德正交多项式有两个参数\(l\)和\(m\),将多项式族分解为函数带,其中\(l\)是函数带的索引,是一个从\([0,\infty]\) 的值,而每一个函数带上的\(m\)取值为:\([0,l]\)