模型视图变换(几何变换)矩阵:

1. 齐次坐标:两条平行线也可以相交。

在欧几里得空间中,两条平行线是无法相交的,但是在投影空间(Projective Space)这条定理就不再适用了。
比如上图中,两条平行的铁轨由于距离我们越来越远,终于在视平线处相交了,相交点是“无限远”。

欧式空间对2D/3D空间的描述恰到好处,但是对投影空间就力不能及了(事实上,欧式空间是投影空间的一个子集)。

通常在二维空间中,我们把一个点表示为(x, y),那么如果这个点位于无限远又如何表示呢?一般是 (∞,∞),

而这样一个数学符号对我们的意义就太小了,因为它很难进行计算和变换。

为了描述“在无限远处”相交这个情景,数学家们发明了另一种坐标系,即齐次坐标系。

解决方案:齐次坐标系

简单来说,齐次坐标系就是使用N+1个数来表示N维欧式空间的方式,比如欧式空间中有一点(X,Y),那么在齐次空间中将被表示为(x,y,w),其中W为投影变量,W的作用就是把齐次空间转换回欧式空间:

X = x/w 
Y = y/w

举个例子来说,欧式空间中有一点(1, 2),在齐次空间中将被表示为(1,2,1). 如果这个点向无限远处运动变成了(∞,∞),齐次坐标就可以表示为(1,2,0),因为1/0和2/0正好也是无限大。也就是说,我们可以不使用"∞"就可以表示无限大了。

验证

回到我们最初的问题,假如在欧式空间中有两条平行线:


只要C不等于D,他们永远不会相交。

现在我们使用齐次坐标系来重写这两条线:


很容易发现,这两条线在(x, y, 0) 初相交,也就是无限远处。

齐次坐标在计算机视觉处理上非常有用,比如把3D空间投影到屏幕上(2D)。

原文:http://www.songho.ca/math/homogeneous/homogeneous.html

2. 向量与齐次坐标

一个n维向量用齐次坐标表示为一个n+1维向量。

(x1,x1,...,xn)->(wx1,wx2,...,wxn,w),齐次向量的表示不是唯一的,例如齐次坐标[8,4,2]与[4,2,1]都表示点(4,2).

3.齐次坐标的应用

利用齐次坐标可以用矩阵运算,把二维、三维或高维空间点集从一个坐标系转换到另一个坐标系,实现了方便的数学计算。

最新文章

  1. SQL实用
  2. Java 对象 及 对象的应用
  3. Winform调用系统的剪切,复制,粘贴文件功能
  4. js节点解析
  5. [转]在BBB启动时自动加载dtbo(或执行脚本、运行程序)
  6. posix和system v有什么区别/?
  7. Mysql笔记【1】-数据库的基本操作(创建/删除)
  8. Index of super-prime - SGU 116(素数+背包)
  9. Latex(一)公式自动编号与自动引用
  10. 阅读zepto.js的core中的Core methods
  11. Java集合之Properties
  12. Perf工具
  13. BZOJ 2653: middle [主席树 中位数]
  14. Spring 学习笔记 ----依赖注入
  15. Oracle 关键字、高级函数的使用
  16. JavaScript入门学习笔记(异常处理)
  17. @Component注解的解析
  18. hostapd中扫描的调用过程
  19. lucene总结——(十七)
  20. Web验证方式(3)--OAuth 2.0协议

热门文章

  1. Qt - 获取本机网络信息
  2. [转帖]教你如何修改运行中的docker容器的端口映射
  3. Linux进程后台执行nohup(OpenTSDB后台运行方法)
  4. 小记---------idea新手操作
  5. 修建泳池&最大子矩阵
  6. java 工具类使用
  7. ImportError: Could not import PIL.Image.
  8. JS拖拽系列--多元素拖拽,面向对象,es6拖拽
  9. RabbitMQ入门教程(十一):消息属性Properties
  10. 七、for循环