PBR读书笔记一:Geometry & Transformation

这会是一个持续更新的系列,用来记录我在阅读《Physically Based Rendering》的一些读书心得和brief。

四元数 Quaternions

之前玩Unity的时候就有过使用四元数的经历,当时还不太明白万向锁和四元数的本质,看了这一章之后遍会有更加深入的体会。

四元数发明的初衷是对于复数的拓展,\(q=(x,y,z,w)=w+x\vec i+y\vec j+z\vec k\),ijk四个量的乘法运算是非交换的。与此同时,\(q=(q_{xyz}, w)\),因此对两个四元数做点乘,两个分量:

\[(q\cdot q')_{xyz} = q_{xyz}\times q'_{xyz} + q_wq'_{xyz} + q'_wq_{xyz}\]

\[(q\cdot q')_{w} = q_w\cdot q'_w - (q_{xyz}\cdot q'_{xyz})\]

定义单位四元数\(x^2+y^2+z^2+w^2=1\),同时很重要的,在三维空间中,点\(p\)绕着一个单位轴\(\vec v\)进行\(2\theta\)的旋转,可以通过四元数\(q = (\vec v\sin\theta, \cos\theta)\)实现:

\[p' = qpq^{-1}\]

其中对于四元数\(q=(\vec v, w)\),求其共轭四元数:\(Q^*=(-\vec v, w)\),而对应的其逆\(q^{-1}=\frac{Q^*}{|q|}\)

接下来还有四元数插值的部分,但是主要目的不在这里,就先略过了(animation相关)。

看了一圈,这一章比较陌生的知识差不多结束了。

作者

Carbene Hu

发布于

2021-12-24

更新于

2024-11-19

许可协议

评论