3D 球谐函数可视化
3D 球谐函数可视化
网上看到很多画球谐函数的文章,估计文章作者本人都没理解画的是什么。为什么有的球谐函数图片不是一个球面分布?为什么球面上有各种颜色分布?我下面会针对各种疑惑进行解答。
首先要理解球谐函数是什么
球谐函数是一个函数,这个函数有两个自变量,分别是极角 和方位角 。有的讲球谐函数的书里会讲这两个变量合为一个变量 ,这个是立体角,可以理解为沿着 z 轴方向的向量以原点为旋转中心,先往 z 轴的反方向画个 的扇形,这个扇形再以 z 轴为旋转轴,以 xy 平面为参考面逆时针旋转 。

这里我将球坐标系中的 r 设为了 1。实际上球谐函数是没有 r 这个变量的,只是关于立体角的函数,但为了让人能够理解球谐函数,就用一整个球面,也就是完整的立体角(,球表面积 比 )来给出球谐函数自变量的取值范围。
知道了自变量和自变量的取值范围,球谐函数的值就是因变量,也就是结果。这个结果有好几种表达方式:
- 在球面上用不同的颜色表示球谐函数值的大小;
- 在球面上用相对单位 r 的偏差值的 Δr 来表示球谐函数值的大小;
- 不用球面了,直接用球谐函数值的绝对值表示 r,在给定的 和 下根据 作为 r 来画立体图。用 的实部给表面上色,值越大越红温,越小越蓝温。
球谐函数的表示方法
球谐函数的表达式大家都知道
其中 是归一化常数, 是连带勒让德函数, 是极角, 是方位角。
虽然连带勒让德函数是实函数(各种 和 的组合),但方位角函数是复指数,存在虚数,在实坐标系下你画不出来啊…
由于化学、量子力学里常用的是 实球谐函数(因为轨道是实的)。为了让函数变成实数,需要把 的复球谐函数做如下线性组合:
配上系数 是为了做归一化,所以维基百科的表格中,极坐标表达式比简单乘积多了一个 。
因此这里我们 关注的重点是球谐函数 的实部和它的大小
球谐函数绘图分析
球谐函数可视化工具我已经推送到了 github 仓库里,仓库地址 https://github.com/Loli-Eternally/Spherical-Harmonics-Viewer.git
我们对各阶球谐函数的示意图进行分析

这里只有 是一个球,因为它的结果是一个常数,所以 r 为常数,就是一个球。
其余的结果有的是哑铃状,有的是甜甜圈状,这是因为确定的 和 下, 的绝对值,也就是 r 的大小一直在变。所以你看到的各种奇形怪状的球谐函数图,都是 或 (用自己的最大值归一化了)的结果。
为了表示实球谐函数的结果,也就是实数那部分的情况,这里就用 colormap 来表现数值大小了,数值越高越红温,具体实现方式看仓库代码。
总结
- 球谐函数可以看成二元函数(,),也可以看成一元函数(立体角 );
- 如果球谐函数绘图都是一个球,那么球面上的颜色代表的是球谐函数的实数大小或者绝对值大小(具体看绘图定义);
- 如果球谐函数绘图是各种奇形怪状,那么立体表面距离原点的长度为球谐函数绝对值,如果表面还有颜色,那就代表球谐函数的实部大小:越红温值越大。





