Projective Geometric Algebra, PGA 射影几何代数. SIGGRAPH 2019 Course Notes. Chpt. 4
Projective Geometric Algebra 射影几何代数
参考并概括自 Geometric Algebra for Computer Graphics, Siggraph 2019 Course Notes, Charles G. Gunn 。
注:非翻译。跳过了第1, 2, 3的导入章节。本文图片均引用自参考文献。
Projective Geometric Algebra,射影几何代数,下面简称PGA,是欧式空间中处理几何关系的一套代数工具。几何的代数工具对于在现代工程学、CAD、VR、3D游戏、动画等各个相关领域非常重要。一般比较熟悉也是应用十分广泛的,是向量、线性代数、解析几何(Vector and Linear Algebra and Analytic Geometric, 简称VLAAG)的一套框架。而PGA是另一套现代方法,与传统的VLAAG方法有所不同,从另一个角度,另一个观点来求解欧式空间中的几何问题。
Chpt. 4 Immersive introduction to geometric algebra
几何代数的基本哲学就是:几何的运算都是数的运算(Geometric primitives behave like numbers)。在PGA中,基本形(geometric primitives. 点、直线、平面)等,由**外代数(exterior algebra)**中不同阶(grade)的向量表示,例如3D空间中:
- scalar: 0-vector
- plane: 1-vector
- lines : 2-vector
- point: 3-vector
每一阶的都构成一个向量代数空间(运算为加法和乘法)。几何代数的元素被称作多重向量(multivector),是k-vector的“和”。一个multivector 的k阶部分,记作。几何图元之间的关系通过**几何积(geometric product)**来表达。
下面举一些用PGA解决常见几何问题的形式化的例子,感受PGA方法的框架的运用。
Example 1. 3D空间中的点直线
目标任务:对三维欧式空间中给定的一个点,一个不经过该点的直线。找到唯一的直线经过点并和直线正交。
一个直线(2-vector),和一个点(3-vector),通过几何积,包含了两个部分,一个1-vector,一个3-vector
- 是垂直于直线过点的平面,记作
- 是平面的法线方向。在这个例子中用不到。
如Fig. 1中所示,我们想求的直线可以这样得到:
- 是垂直于直线过点的平面
- 点是平面与直线的交点
- 直线,是交点到的直线。其中, 是外代数中的运算概念。后面的章节将会详细介绍。
Example 2. 一个3D万花筒(Kaleidoscope)
目标任务:一个 k-Kaleidoscope 是中一对镜子平面,两平面之间夹角为。给一个几何体,通过镜像复制,生成一个在这个“万花筒”中看到的形状。
在PGA中, 是一个1-vector。可以normalize使得。在PGA中,一个物体对几何的反射,通过**"sandwich"运算**实现,其中可以是任意的几何元。的作用是保证几何体经过sandwich形状相同。
在Fig. 2 第二幅图中,是和的结果。第三幅图中,是对任何可能的所有反射的结果(e.g. )。例如,若镜子平面的夹角是,则这个万花筒反射复制了个几何体。(在这里,)。
Example 3. 一个3D中连续螺旋的动作
目标任务:表示一个3D的连续螺旋动作(screw motion)
中一般的物体姿态方向不变的变换是螺旋动作,即围绕一个特定直线(轴)旋转,同时沿平行于这个直线的方向平移。平移距离和旋转弧度的比,叫做螺距(pitch)。只有旋转的运动的螺距是0,只有平移的运动的螺距是。
在Example 2. 中,我们已经看到了包含旋转的操作,它通过在两个有夹角的平面之间反射实现。(i.e., ,就是旋转两倍反射平面夹角的结果,在上面的例子中是)。
下面我们用不同但有些类似的方法来得到绕特定轴的旋转。在中,一个过点,以为方向的直线通过KaTeX parse error: Undefined control sequence: \or at position 10: \Omega:=P\̲o̲r̲ ̲V得到(Fig. 3中的黄线)。可以通过normalize使得。为了得到围绕旋转的转动,定义motor . 感觉类似于以复数为指数,因为。利用前面的sandwich运算,我们就得到,就能够实现围绕连续旋转的结果。若,则保持不变。时,表示旋转弧度。对四元数熟悉的读者应该能注意到它与四元数表示旋转的相似之处,这并不是巧合。在后面的章节中会介绍。
为了得到一个沿的平移变换,我们用一个不同的直线:通过polarity运算:。是的正交补,且长度为无穷。它由所有垂直的方向组成。如果看做是一个竖直的轴,则是水平直线。在PGA中,正交补是通过乘上一个特殊的 4-vector得到的,单位**伪标量(pseudoscalar,**是几何代数最强大也有趣的工具之一) 。一个连续的平移是通过一个对平移量做sandwich运算得到的。
将上面的旋转、平移结合起来,对于螺距为的螺旋运动,可以表示为
用它来对作sandwich运算。
在接下来的章节中,将会介绍PGA的数学基础。
参考文献
[1] Charles G. Gunn. Course notes Geometric Algebra for Computer Graphics SIGGRAPH 2019.
水平有限,笔记概括可能有不好的地方。如有错误请指正,如有疑惑可参考上述资料。