看到一位叫做”Bigcoder”的前辈,对一个叫做“三百年 重生”的博客的关于齐次坐标理解的部分摘抄和他自己的解释后,茅塞顿开,对于四元数和齐次坐标这种使用比描述空间维度多一个维度来对位姿进行描述的形式有了进一步理解。现对博客内容进行摘录和笔记。
- 注: ∗ 并不是表示卷积而是表示数乘或者内积
齐次坐标
齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR。
这句话这么说是有理由的,在普通投影几何当中,使用一个有序实数对(x,y)来对一个点或者一个向量进行描述,这意味着,一个点或者一个向量在表达上毫无差别,这就使得描述和计算上存在混乱,推广到立体空间中亦然。对于坐标而言,我们关心的是它的绝对位置,对于向量,因为向量的平移性,我们不关心它的位置而是关心他长度和方向。所以
由于作者对齐次坐标真的解释的不错,我就原封不动的摘抄过来:
对于一个向量v以及基oabc,可以找到一组坐标
(v1,v2,v3) ,使得
v=v1∗a+v2∗b+v3∗c(1)而对于一个点p,则可以找到一组坐标 (p1,p2,p3) ,使得
p–o=p1∗a+p2∗b+p3∗c(2)从上面对向量和点的表达,我们可以看出为了在坐标系中表示一个点(如p),我们把点的位置看作是对这个基的原点o所进行的一个位移,即一个向量——p – o(有的书中把这样的向量叫做位置向量——起始于坐标原点的特殊向量),我们在表达这个向量的同时用等价的方式表达出了点p:
p=o+p1∗a+p2∗b+p3∗c(3)所以此时将一个(1)式和(3)式写成矩阵相乘形式就有如下式子
(1)=>[v1v2v30]∗[abco]
(3)=>[p1p2p31]∗[abco]那么上述等式中的第二项可以看做点或者向量所在空间的基,那么第一项就可以看作在这个空间下的坐标,这个坐标就被成为齐次坐标,那么从这里就可以看到,这个一个点的齐次坐标为(a,b,c,1),一个向量的齐次坐标为(a,b,c,0),一个点的同意齐次坐标有多种表达形式,但是我们总是可以将坐标中的每一项除以第四项来化成上面的形式,由此可见,齐次坐标就可以清晰的分辨出来点和向量。