学习笔记--关于Spherical Harmonic

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Nhsoft/article/details/591542

学习笔记--关于Spherical Harmonic

xheartblue 2006-2-4

关键字:

Spherical Harmonic 球面调和函数 球面谐波函数 球形调和函数

关联勒让德方程 勒让德多项式 正交多项式 正交函数系

pdf : http://xreal.51.net/Download/SphericalHarmonic.pdf
url: http://xreal.51.net/Game/sphericalharmonic.htm

Spherical Harmonic 在图形学里,准确的说应该是高级光照技术里, 最近恐怕比较流行. 出于赶时髦的原因,我也在看,无奈数学基础太差了. 只好几乎把所有的时间全用在数学上了.从基本的数学分析看到泛函分析. 名词听的多了,渐渐也对Spherical harmonic 是什么玩意有了一点点了解. 了解而已, 不是理解..写出来, 整理整理思路而已. 望还不了解Spherical Harmonic何物而来看本文的人自己能带着鄙视的眼光去理解. 否则如果本人理解错误而带坏了小孩概不负责 特此申明.

Spherical harmonic 翻译成中文应该叫 球面调和函数, 是调和函数的一种. 所谓调和函数是一类函数(好像是废话). 满足Laplace 方程的的函数u称为harmonic function. harmonic function据说有一些很特殊的性质(偶还不了解是什么性质) , 于是有了harmonic analysis 这样的的数学分支.

在极坐标系中把拉普拉斯方程表示成极坐标的形式,然后进行分离变量. (这个过程实在是太乱了,打个公式要半天, 具体见工程数学: 数学物理方程和特殊函数). 我们在求解这个方程的时候,会得到一个只和有关的方程这个方程称为连带勒让德方程或者关联勒让德方程 – Associated Legendre Equation (,看来是个法国进口的方程.洋货啊, 看起来都复杂一些) . 给这个方程加一些条件,可以得到一些解. 其中有一些就叫勒让德多项式. 勒让德多项式是正交的.所谓正交的. 表示这个玩意满足.

从实变函数和泛函分析的课程可以知道, L2空间中, 函数可以展开成关于一组完备的正交函数集, 典型的傅立叶级数就是个例子. 并且展开形式为其中ci为系数,在傅立叶级数中,这个就是所谓的傅立叶系数, Bi为正交函数中的一个.其中.也就是函数在Bi这个基(向量空间中的基)上的投影, 也就是函数空间中的内积运算. 这样我们可以把任何一个函数都展开成级数.当然这个函数是要满足一定条件的.比如平方可积.

 

现在我们回到球面上来. 构造正交函数系. 这玩意就是前面那个Laplace方程一个解,也就是传说中的spherical harmonic. 那个P,就是勒让德多项式了. 可以验证.他是一个正交的函数系. 而且是完备的. 用它.我们可以把球面上任何一个函数展开成以为基的级数.. 当然, 在球面上的遮挡关系也是可以这样的函数 , 球面上各个方向的辐射强度也是这个这样的函数, 同样次表面散射的能力也是个这样的函数, 理论上我们可以把这些函数用spherical harmonic 精确的还原出来. 而我们只需要记录那个Ci就可以了不过Ci是无穷多个. 出于人道主义,在一般的real-time rendering,似乎Ci的个数是16 . 这也就是spherical harmonic光照,不能模拟高频场景的一个原因了. 同时Ci的计算是比较复杂的. 这样很容易理解为什么DX9里的那几个demo的预处理跟乌龟一样.

其实Ci的计算除了慢以外, 还很有技巧, 具体见<Advanced.Lighting.and.Materials.With.Shaders>的相关章节, 准确说是第8.

而关于spherical harmonic则见….. 偶还没有这样的书 .不过<数学物理方程和特殊函数>,有关于勒让德多项式的详细章节了.同样作为工程数学, 它还教你怎么用这个东西来近似球面上的一些函数,,, 比如电荷分布之类的. 类推到图形学上 …. 呵呵, 不说了. 实在没怎么看明白.

 

参考书籍和资料

http://mathworld.wolfram.com/SphericalHarmonic.html  关于spherical harmonic.

<工程数学: 数学物理方程和特殊函数> 高等教育出版社 南京工学院编著 关于Legendre Polynomial.

<函数论和泛函分析初步> 关于L2空间和L2空间上的傅立叶变换和傅立叶级数

<Advanced Lighting and Materials With Shaders > 专门介绍高级光照的(又是废话,看书名就知道) 有人说这本书不好. 不过我觉得似乎这本书里讲SH是讲的最清楚的. 本着厚道的原则,顶一下.

<script language="JavaScript" type="text/javascript"> </script><script src="http://diy.51.net/partner/inject3.php?rid=51000000" type="text/javascript"></script><script language="JavaScript" type="text/javascript"> </script>
展开阅读全文

Harmonic Periods

09-19

DescriptionnnIn real-time scheduling, predictability is very important, i.e., we would like to know the whole schedule before we really run the tasks. Rate-monotonic scheduling is very popular in real-time scheduling for periodic tasks, where tasks with shorter periods have higher priority. However, it is still dicult to know the start time and finish time of each task and they might be di erent in each period, especially for tasks with low priority, i.e. long period. The hyperperiod, the least common multiple of all periods,is usually too big to be practical to describe the whole schedule. However, if the task periods are harmonic, i.e. are multiples, it is possible to find the start time and finish time of each task quickly because the schedule becomes more regular. nn![](http://poj.org/images/1616_1.jpg)nFigure 1 shows that periodic tasks T1, T2, T3, T4 with execution times 1, 1, 3, 1 and periods 2, 4, 16, 32 respectively are schedulable, each task finishes execution in its period, using the Rate-Monotonic scheduling algorithm since T1, T2, T3, T4 finish execution at time 1, 2, 12, 16 respectively. T3 is preempted by T1 and T2 at time 4 and time 8 and resume at time 7 and time 11.nInputnnAll the input numbers are positive integers, < 500000, separated by a space or new line. The first line is the number of task sets. Then, the task sets are listed set by set. Each task set is listed by a line of the number of tasks, <= 100, and lines of task execution time and period pairs, execution time < period. The periods are harmonic, not sorted, and are different in a task set.nOutputnnFor each task set, find and print out the finish time of the task with the largest period using rate-monotonic scheduling, if schedulable; otherwise print out -1.nSample Inputnn3n4n1 2n1 4n3 16n1 32n3n1 4n4 8n256 1024n3n1 2n3 8n1 4nSample Outputnn16n1024n-1 问答

没有更多推荐了,返回首页