最详细的齐次坐标理解(3D场景投影到2D场景的基础概念)

搬运一篇优秀的对齐次坐标解释的很清楚的帖子,作者是韩国的,从其个人博客翻译的,原地址贴上
http://www.songho.ca/math/homogeneous/homogeneous.html
齐次坐标的应用:
齐次坐标在电脑图形内无处不在。因为该坐标允许平移、旋转、缩放及透视投影等可表示为矩阵与向量相乘的一般向量运算。依据链式法则,任何此类运算的序列均可相乘为单一个矩阵,从而实现简单且有效之处理。与此相反,**若使用笛卡儿坐标,平移及透视投影不能表示成矩阵相乘,虽然其他的运算可以。**现在的OpenGL及Direct3D图形卡均利用齐次坐标的优点,以具4个暂存器的向量处理器来实作顶点着色引擎。
齐次坐标的方法:
用n+1维向量表示n维空间的坐标。

问题:两个平行线可以相交
每个人都熟悉的知识:在欧几里得空间,一个平面的两条平行直线永不相交。但在投影空间却不是这样的。
例如,图里的铁轨随着远离视线而变得越来越窄,最终在无限远处相交于一点。铁轨在远处相交
欧几里得和笛卡尔空间描述3D或2D几何结构的方式不适用于投影空间(事实上欧几里得空间是投影空间的一个子集)
在笛卡尔坐标系里用(x,y)来表示一个点,当这个点变得无限远的时候怎么表示呢?可以用(∞,∞)来表示。这样的点在欧几里得空间没有意义。两条平行线在投影空间的无限远处相交,但在欧几里得空间永远也不相交。数学家们已经发现了解决这个问题的方法。
解决方案:齐次坐标
奥古斯特·斐迪南·莫比乌斯( August Ferdinand Möbius,1790-1868,德国数学家)引入了齐次坐标,用来在投影空间计算几何图形。齐次坐标是一种用N+1个数字来表示N维坐标系的方法。
在现有的2D坐标里增加一个w,就形成了2维的齐次坐标。
笛卡尔坐标与齐次坐标的转换关系:
笛卡尔坐标(X,Y)就变成了(x,y,w)。而笛卡尔坐标里的X和Y与齐次坐标里x和y的对应关系可以这样来表示:X=x/w, Y=y/w
例如,(1,2)变成了(1,2,1)。当(1,2)移向无穷远(∞,∞),即(1,2,0)。因为(1/0,2/0)≈(∞,∞)。所以无穷远的点就可以不用符号“∞”来表示了。
为什么叫“齐次的”?
前边已经提到过,将齐次坐标(x,y,w)的两个分量x,y除以w就可以得到笛卡尔坐标(x/w,y/w)。
一个重要的事实:
(1,2,3)=>(1/3,2/3),(2,4,6)=>(2/6,4/6)···(1a,2a,3a)=>(1/3,2/3)
这些齐次坐标都对应相同的笛卡尔坐标(1/3, 2/3)。因此,这些点是“齐次的(homogeneous,在这里翻译成本质上是相同的)”,因为这些齐次坐标表示都是同一个点(笛卡尔或者欧几里得坐标系)。换句话说,这些齐次坐标是scale invariant(就是说所有分量都乘以一个标量以后表达的值是不变的,标量不变听起来会很奇怪哈)因为他们代表了笛卡尔坐标系里面的同一个点。换句话说,齐次坐标有规模不变性。

证明:两个平行线可以相交
笛卡尔空间两个平行直线的方程组:
平行直线方程
Ax + By + C = 0
Ax + By + D = 0
如果C != D,则上式无解,即两条直线平行不相交。
现在用投影空间的x/w和y/w代替x和y:
A(x/w) + B(y/w) + C = 0
A(x/w)+ B(y/w) + D = 0
在这里插入图片描述
有解:(x,y,0)。因此,两条平行线在(x,y,0)处相交,即无限远处的点。
齐次坐标是计算机图形学中非常重要的基本概念,比如将3D场景投影到一个2D平面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值