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 MMM的k阶部分,记作⟨M⟩k\langle M \rangle_k⟨M⟩k。几何图元之间的关系通过**几何积(geometric product)**来表达。
下面举一些用PGA解决常见几何问题的形式化的例子,感受PGA方法的框架的运用。
Example 1. 3D空间中的点直线
目标任务:对三维欧式空间E3E^3E3中给定的一个点PPP,一个不经过该点的直线Π\PiΠ。找到唯一的直线Σ\SigmaΣ经过PPP点并和直线Π\PiΠ正交。
一个直线Π\PiΠ(2-vector),和一个点PPP(3-vector),通过几何积ΠP\Pi PΠP,包含了两个部分,一个1-vector,一个3-vector
ΠP=⟨ΠP⟩1+⟨ΠP⟩3\Pi P=\langle \Pi P\rangle_1+\langle \Pi P \rangle_3 ΠP=⟨ΠP⟩1+⟨ΠP⟩3
- ⟨ΠP⟩1\langle \Pi P\rangle_1⟨ΠP⟩1 是垂直于直线Π\PiΠ过点PPP的平面,记作Π⋅P\Pi \cdot PΠ⋅P
- ⟨ΠP⟩3\langle \Pi P\rangle_3⟨ΠP⟩3 是平面的法线方向。在这个例子中用不到。
如Fig. 1中所示,我们想求的直线Σ\SigmaΣ可以这样得到:
- Π⋅P\Pi \cdot PΠ⋅P是垂直于直线Π\PiΠ过点PPP的平面
- 点(Π⋅P)∧Π(\Pi\cdot P)\wedge \Pi(Π⋅P)∧Π是平面Π⋅P\Pi \cdot PΠ⋅P与直线Π\PiΠ的交点
- 直线Σ:=((Π⋅P)∧Π)∨P\Sigma :=((\Pi\cdot P)\wedge\Pi)\lor PΣ:=((Π⋅P)∧Π)∨P,是交点到PPP的直线。其中,∧\wedge∧ ∨\lor∨是外代数中的运算概念。后面的章节将会详细介绍。
Example 2. 一个3D万花筒(Kaleidoscope)
目标任务:一个 k-Kaleidoscope 是E3E^3E3中一对镜子平面a,b\bold{a},\bold{b}a,b,两平面之间夹角为Π/k\Pi/kΠ/k。给一个几何体GGG,通过镜像复制,生成一个GGG在这个“万花筒”中看到的形状。
在PGA中, a\bold{a}a是一个1-vector。可以normalize使得a2=1\bold{a}^2=1a2=1。在PGA中,一个物体对几何的反射,通过**"sandwich"运算**aGa\bold{aGa}aGa实现,其中G\bold{G}G可以是任意的几何元。a2=1\bold{a}^2=1a2=1的作用是保证几何体经过sandwich形状相同。
在Fig. 2 第二幅图中,是bGb\bold{bGb}bGb和aGa\bold{aGa}aGa的结果。第三幅图中,是G\bold{G}G对a,b\bold{a,b}a,b任何可能的所有反射的结果(e.g. baGab\bold{baGab}baGab)。例如,若镜子平面的夹角是Π/6\Pi/6Π/6,则这个万花筒反射复制了121212个几何体G\bold{G}G。(在这里,(ab)6=(ba)6=1\bold{(ab)}^6=\bold{(ba)}^6=1(ab)6=(ba)6=1)。
Example 3. 一个3D中连续螺旋的动作
目标任务:表示一个3D的连续螺旋动作(screw motion)
E3E^3E3中一般的物体姿态方向不变的变换是螺旋动作,即围绕一个特定直线(轴)旋转,同时沿平行于这个直线的方向平移。平移距离和旋转弧度的比,叫做螺距(pitch)。只有旋转的运动的螺距是0,只有平移的运动的螺距是∞\infty∞。
在Example 2. 中,我们已经看到了包含旋转的操作,它通过在两个有夹角的平面之间反射实现。(i.e., b(aGa)b\bold{b(aGa)b}b(aGa)b,就是旋转两倍反射平面夹角的结果,在上面的例子中是π/3\pi/3π/3)。
下面我们用不同但有些类似的方法来得到绕特定轴的旋转。在E3E^3E3中,一个过点PPP,以VVV为方向的直线通过Ω:=P∨V\Omega:=P\lor VΩ:=P∨V得到(Fig. 3中的黄线)。可以通过normalize使得Ω2=−1\Omega^2=-1Ω2=−1。为了得到围绕Ω\OmegaΩ旋转α\alphaα的转动,定义motor etΩe^{t\Omega}etΩ. 感觉类似于以复数为指数,因为Ω2=−1\Omega^2=-1Ω2=−1。利用前面的sandwich运算,我们就得到etΩGe−tΩe^{t\Omega}Ge^{-t\Omega}etΩGe−tΩ,就能够实现GGG围绕Ω\OmegaΩ连续旋转的结果。若t=0t=0t=0,则保持不变。t=α/2t=\alpha/2t=α/2时,表示旋转弧度α\alphaα。对四元数熟悉的读者应该能注意到它与四元数表示旋转的相似之处,这并不是巧合。在后面的章节中会介绍。
为了得到一个沿Ω\OmegaΩ的平移变换,我们用一个不同的直线:通过polarity运算:Ω⊥\Omega^\perpΩ⊥。Ω⊥\Omega^\perpΩ⊥是Ω\OmegaΩ的正交补,且长度为无穷。它由所有Ω\OmegaΩ垂直的方向组成。如果Ω\OmegaΩ看做是一个竖直的轴,则Ω⊥\Omega^\perpΩ⊥是水平直线。在PGA中,正交补是通过乘上一个特殊的 4-vector得到的,单位**伪标量(pseudoscalar,**是几何代数最强大也有趣的工具之一) I:Ω⊥:=ΩI\bold{I:\Omega^\perp:=\Omega I}I:Ω⊥:=ΩI。一个连续的平移是通过一个对平移量etΩ⊥e^{t\Omega^\perp}etΩ⊥做sandwich运算得到的。
将上面的旋转、平移结合起来,对于螺距为p∈Rp\in \Rp∈R的螺旋运动,可以表示为
et(Ω+pΩ⊥)=etΩetpΩ⊥e^{t(\Omega+p\Omega^\perp)}=e^{t\Omega} e^{tp\Omega^\perp} et(Ω+pΩ⊥)=etΩetpΩ⊥
用它来对G\bold{G}G作sandwich运算。
在接下来的章节中,将会介绍PGA的数学基础。
参考文献
[1] Charles G. Gunn. Course notes Geometric Algebra for Computer Graphics SIGGRAPH 2019.
水平有限,笔记概括可能有不好的地方。如有错误请指正,如有疑惑可参考上述资料。
Projective Geometric Algebra, PGA 射影几何代数. SIGGRAPH 2019 Course Notes. Chpt. 4相关推荐
- 几何代数(Geometric Algebra 也叫克利福德代数 Clifford Algebra)简介
几何代数简介(Introduction to Clifford Algebra) © from John Denker \\[1em] 人物介绍克利福德 克利福德代数(Clifford algebra ...
- Maxon将在Siggraph 2019公布下一代Cinema 4D RELEASE 21
R21提供令人惊叹的新功能,单一版本的Cinema 4D和新的订阅定价选项 功能更新并且更广泛的整合了领先的技术解决方案 为专业3D人士提供创意工作流程 德国,弗里德里希斯多夫 -- (美国商业资讯) ...
- 几何代数(Geometric Algebra)
一.四元数 1.定义 四元数是简单的超复数(实部和虚部组成),任意一个四元数都可以写成: q = a + b i + c j + d k = [ w , u ] q=a+b\boldsymbol{i} ...
- 2019 siggraph_观看SIGGRAPH 2019的Unity图形会议
2019 siggraph If you weren't able to attend SIGGRAPH this year or missed one of our presentations in ...
- MAX-Plus algebra最大加代数
首先给出Max-Plus定义: 设 ,在R*上定义两个运算:,,则称是Max-Plus代数. Max-Plus代数主要用于解决非线性问题,例如调度理论等离散系统. Max-Plus在矩阵中的一些计算: ...
- fastai 2019 lesson9 notes 笔记
lesson9 How to train your model 本文markdown源文件:lesson9.md 2019年视频地址:https://course19.fast.ai/videos/? ...
- fastai 2019 lesson8 notes 笔记
lesson8 本文markdown源文件:lesson8.md 视频地址:https://course19.fast.ai/videos/?lesson=8 YouTube lesson8 英文字幕 ...
- 收藏 | 数据智能与计算机图形学领域2019推荐论文列表(附链接)
来源:微软研究院AI头条 本文约3600字,建议阅读10分钟. 2019年度数据智能与计算及图形学领域论文推荐. 数据智能 1. Data-anonymous Encoding for Text-to ...
- 我长了一条日本制的尾巴:智能配合身体运动,增强平衡感,把我变成“改造人”| SIGGRAPH...
栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAI △ 来自<小林家的妹抖龙> "我头上没有鸡脚,但我身后有尾巴." 这条尾巴来自东瀛,是庆应义塾大学的作品. ...
最新文章
- (转)Sublime Text2 快捷键汇总
- mysql istransient_由于 MySQL 版本问题导入报错
- flutter 导航页面转换动画效果
- mysql zero fill_mysql zerofill 的使用
- python设置字符间距_python字符串处理以及字符串格式化
- vue php tree,Vue 实现树形视图数据功能
- ARouter解析笔记
- 自编码模型autoencoder
- SQL Server 2012下载及安装教程
- 完美刷机找不到服务器,完美刷机
- JDK 1.8 官网下载地址(linux / windows)
- Matlab资料汇总暨MATLAB中文论坛帖子整理(二)
- [个人小记]U盘文件超过4g怎么办?
- 电脑win+R小知识
- FreeRTOS移植Error: L6218E: Undefined symbol xTaskGetCurrentTaskHandle (referred from stream_buffer.o).
- 震撼!寒冬腊月里惊现多台历途外墙清洗机器人 1
- error LNK2001: 无法解析的外部符号 __imp____iob_func
- 神操作 | 不重启 JVM,替换掉已经加载的类,偷天换日?
- 男人必听九大歌曲精选
- SpringBoot返回date日期格式化,解决返回为TIMESTAMP时间戳格式或8小时时间差