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​

  1. ⟨ΠP⟩1\langle \Pi P\rangle_1⟨ΠP⟩1​ 是垂直于直线Π\PiΠ过点PPP的平面,记作Π⋅P\Pi \cdot PΠ⋅P
  2. ⟨ΠP⟩3\langle \Pi P\rangle_3⟨ΠP⟩3​ 是平面的法线方向。在这个例子中用不到。

如Fig. 1中所示,我们想求的直线Σ\SigmaΣ可以这样得到:

  1. Π⋅P\Pi \cdot PΠ⋅P是垂直于直线Π\PiΠ过点PPP的平面
  2. 点(Π⋅P)∧Π(\Pi\cdot P)\wedge \Pi(Π⋅P)∧Π是平面Π⋅P\Pi \cdot PΠ⋅P与直线Π\PiΠ的交点
  3. 直线Σ:=((Π⋅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相关推荐

  1. 几何代数(Geometric Algebra 也叫克利福德代数 Clifford Algebra)简介

    几何代数简介(Introduction to Clifford Algebra) © from John Denker \\[1em] 人物介绍克利福德 克利福德代数(Clifford algebra ...

  2. Maxon将在Siggraph 2019公布下一代Cinema 4D RELEASE 21

    R21提供令人惊叹的新功能,单一版本的Cinema 4D和新的订阅定价选项 功能更新并且更广泛的整合了领先的技术解决方案 为专业3D人士提供创意工作流程 德国,弗里德里希斯多夫 -- (美国商业资讯) ...

  3. 几何代数(Geometric Algebra)

    一.四元数 1.定义 四元数是简单的超复数(实部和虚部组成),任意一个四元数都可以写成: q = a + b i + c j + d k = [ w , u ] q=a+b\boldsymbol{i} ...

  4. 2019 siggraph_观看SIGGRAPH 2019的Unity图形会议

    2019 siggraph If you weren't able to attend SIGGRAPH this year or missed one of our presentations in ...

  5. MAX-Plus algebra最大加代数

    首先给出Max-Plus定义: 设 ,在R*上定义两个运算:,,则称是Max-Plus代数. Max-Plus代数主要用于解决非线性问题,例如调度理论等离散系统. Max-Plus在矩阵中的一些计算: ...

  6. fastai 2019 lesson9 notes 笔记

    lesson9 How to train your model 本文markdown源文件:lesson9.md 2019年视频地址:https://course19.fast.ai/videos/? ...

  7. fastai 2019 lesson8 notes 笔记

    lesson8 本文markdown源文件:lesson8.md 视频地址:https://course19.fast.ai/videos/?lesson=8 YouTube lesson8 英文字幕 ...

  8. 收藏 | 数据智能与计算机图形学领域2019推荐论文列表(附链接)

    来源:微软研究院AI头条 本文约3600字,建议阅读10分钟. 2019年度数据智能与计算及图形学领域论文推荐. 数据智能 1. Data-anonymous Encoding for Text-to ...

  9. 我长了一条日本制的尾巴:智能配合身体运动,增强平衡感,把我变成“改造人”| SIGGRAPH...

    栗子 发自 凹非寺  量子位 报道 | 公众号 QbitAI △ 来自<小林家的妹抖龙> "我头上没有鸡脚,但我身后有尾巴." 这条尾巴来自东瀛,是庆应义塾大学的作品. ...

最新文章

  1. (转)Sublime Text2 快捷键汇总
  2. mysql istransient_由于 MySQL 版本问题导入报错
  3. flutter 导航页面转换动画效果
  4. mysql zero fill_mysql zerofill 的使用
  5. python设置字符间距_python字符串处理以及字符串格式化
  6. vue php tree,Vue 实现树形视图数据功能
  7. ARouter解析笔记
  8. 自编码模型autoencoder
  9. SQL Server 2012下载及安装教程
  10. 完美刷机找不到服务器,完美刷机
  11. JDK 1.8 官网下载地址(linux / windows)
  12. Matlab资料汇总暨MATLAB中文论坛帖子整理(二)
  13. [个人小记]U盘文件超过4g怎么办?
  14. 电脑win+R小知识
  15. FreeRTOS移植Error: L6218E: Undefined symbol xTaskGetCurrentTaskHandle (referred from stream_buffer.o).
  16. 震撼!寒冬腊月里惊现多台历途外墙清洗机器人 1
  17. error LNK2001: 无法解析的外部符号 __imp____iob_func
  18. 神操作 | 不重启 JVM,替换掉已经加载的类,偷天换日?
  19. 男人必听九大歌曲精选
  20. SpringBoot返回date日期格式化,解决返回为TIMESTAMP时间戳格式或8小时时间差

热门文章

  1. Ultra Libraian介绍
  2. 【读写和修改U盘中的十六进制dat数据文件】
  3. HTML转Canvas工具 前端生成图片工具 屏幕快照 html2canvas 下载 或上传至服务器 使用方法
  4. 优秀图片生成参数-stable-diffusion-webui
  5. (一)单相变压器励磁涌流仿真——有关matlab/simulink
  6. Android自定义滚动条——城市列表
  7. 以太坊 什么是以太坊
  8. 英语语法6-过去完成时
  9. Let's make 16 games in C++(十四):Tron
  10. 【EI会议推荐】人工智能主题