球谐函数的概念与应用:可视化理解傅里叶级数
傅里叶级数
在谈及球谐函数时,从傅里叶级数开始理解,会有非常好的体验。从球谐函数的定义出发:球面函数可以分解为无限个球谐函数的累加。阶数越高,逼近的效果越好。而傅里叶级数的定义是,任意的周期函数都可以由简单震荡的无限叠加获得。当然,我们在实际计算机中都是用有限个数去逼近。
我们直接引入傅里叶级数的公式:
其中是 每一项的系数。
是我们想要逼近的函数。当我们用趋于无限的正弦波叠加去逼近一个周期函数时,其过程如下图所示:
引入欧拉公式:
该复指数可以让我们更清晰的观察傅里叶级数在二维图形中的逼近效果。复指数随时间t的变化如下图所示:
如果我们取许多的复指数。它们有系数,该系数表示了圆的半径,指数的n表示了旋转的频率。
根据傅里叶级数的定义,可以使用所有的复指数的向量表示来重构二维的图案:
如上图所示,我们可以将函数分解成足够多的复指数项,利用它们的向量和来重现该函数。n的个数越多,重现的函数越准确。那么我们如何获得每个项的系数
呢?
我们可以发现上图的有常数项
。该项为一个定点,表示了
函数的重心,如下图:
重心可由下述公式计算:
从计算,这给了我们计算别的系数的灵感,比如我们要计算
:
由于复指数在[0,1]区间内的积分始终为0,所以我们可以获得:
我们就有了最初的傅里叶级数的计算系数的公式:
这里我们能从原函数获取系数,n的个数越多,用系数重构的原函数就越准确。
则是我们的输入函数(文中的图形可以使用多组分段函数构成),最后我们观察不同的系数个数和重建的效果:
看到这里,我们球谐函数的作用就显而易见了,利用球面原始函数,可以用低阶去模拟环境光以及ao的效果,高阶则可以用来模拟镜面反射等高精度效果。