为什么使用齐次坐标?

结论:齐次坐标在仿射变换中的使用非常方便。

“齐次坐标表示是计算机图形学重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR。

 

  • 在三维情形下:我们写出(1,3,6),谁知道这代表一个点还是三维空间的一个向量呢?

解决这个问题的方法,就是在三维基础上再加一个维度。

对于点,加上1,也就变成了(1,3,6,1);

对于向量,加上0,也就变成了(1,3,6,0)。

值得注意的是,对于一个点,乘上任意的尺度,这个点的表示不变,例如w(1,3,6,1)->(1w,3w,6w,w),当需要变回非奇次坐标时,除以w,然后将最后一维去掉即可。

 

  • 奇次坐标的表示也可以很方便的表示无穷远点,无穷远点可以这么理解,两条平行线,它们的交点就是无穷远点。

例如:

直线1:ax + by + c = 0,其方向向量为l

直线2:ax + by + d = 0,其方向向量为m

其交点可以表示为 二维平面上的奇次坐标 q = l × m = (d-c)(b,-a,0),忽略标量,其坐标为(b/0 , -a/0),为无穷大,可以理解为无穷远处,平行线相交于无穷远处。

 

由于齐次坐标使用了4个分量来表达3D概念,使得平移变换可以使用矩阵进行,从而如F.S. Hill, JR所说,仿射(线性)变换的进行更加方便。由于图形硬件已经普遍地支持齐次坐标与矩阵乘法,因此更加促进了齐次坐标使用,使得它似乎成为图形学中的一个标准。[1]

 

  • 方便的在欧式变换时表示旋转和平移

我们在表示欧式变化时,表达一次旋转和平移还好,可以直接用a' = R*a + t表示;

但是如果有两次旋转和平移的话,分别为R1, t1 和 R2,t2,分别得到:b = R1*a + t1,  c = R2*b + t2。

最终的结果 c = R2*(R1*a + t1) + t2。

这样的话,在多次变换的情况下,表示起来就会很复杂。

但是如果采用奇次坐标,可以表示成如下形式:

这样的话,在多次变换过程中,就可以方便的用乘法表示平移和旋转。

波浪号表示奇次坐标。

[1] 参考公众号计算机视觉life,地址:https://mp.weixin.qq.com/s/0QHxvTcH4H072U64uDK_2A

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值