齐次表示
2016-03-02 10:41
225 查看
点表示空间中的一个位置,而向量仅表示一个方向,没有具体的位置。使用3x3的矩阵(或者二维空间中2x2矩阵)可以对坐标进行线性变换,比如旋转、缩放,以及错切等。然而,使用这种矩阵并不能进行平移变换。对向量来说,这种不足并不重要,因为向量的平移没有任何意义。只有点才有平移的意义和价值。
对于向量和点的变换来说,齐次表示非常有用,可以只对点进行平移操作。它可以把一个3x3的矩阵扩展为4x4的矩阵,三维的点和向量可以增加一维元素,一个齐次坐标可以表示为:p = (px, py, pz, pw)。随后可以知道,对于点,pw = 1,对于向量,pw = 0。对于投影来说,可以用其他几个值来代替pw。如果pw ≠ 0且pw ≠ 1.那么可以通过齐次化处理获得实际的点,其中所有的分量都除以pw,这意味着可以得到点(px/pw, py/pw, pz/pw, 1)。
式(A.43)所示为一个3x3的矩阵M,可以将其扩展为一个齐次4x4的矩阵形式(一种最简单的扩展形式)。
旋转矩阵、缩放矩阵,以及错切矩阵可以替换(A.43)中的矩阵M,而且会影响到向量和点。然而,平移变换使用了增强矩阵的额外元素来实现平移目的。式(A.44)所示为一种典型的平移矩阵T,可以通过向量t实现对点的平移。
很容易验证,Tv变换对向量v = (vx, vy, vz, 0)并没有什么影响,因为v的最后一个元素为0。如果将点p = (px, py, pz, 1)变换为Tp,那么变换之后的结果就是(px + tx, py + ty, pz + tz, 1),也就是将p平移了一个t。
对于向量和点的变换来说,齐次表示非常有用,可以只对点进行平移操作。它可以把一个3x3的矩阵扩展为4x4的矩阵,三维的点和向量可以增加一维元素,一个齐次坐标可以表示为:p = (px, py, pz, pw)。随后可以知道,对于点,pw = 1,对于向量,pw = 0。对于投影来说,可以用其他几个值来代替pw。如果pw ≠ 0且pw ≠ 1.那么可以通过齐次化处理获得实际的点,其中所有的分量都除以pw,这意味着可以得到点(px/pw, py/pw, pz/pw, 1)。
式(A.43)所示为一个3x3的矩阵M,可以将其扩展为一个齐次4x4的矩阵形式(一种最简单的扩展形式)。
旋转矩阵、缩放矩阵,以及错切矩阵可以替换(A.43)中的矩阵M,而且会影响到向量和点。然而,平移变换使用了增强矩阵的额外元素来实现平移目的。式(A.44)所示为一种典型的平移矩阵T,可以通过向量t实现对点的平移。
很容易验证,Tv变换对向量v = (vx, vy, vz, 0)并没有什么影响,因为v的最后一个元素为0。如果将点p = (px, py, pz, 1)变换为Tp,那么变换之后的结果就是(px + tx, py + ty, pz + tz, 1),也就是将p平移了一个t。
相关文章推荐
- 使用BroadcasterRecevier拦截系统短信息_使用service后台获取位置信息
- iOS获取设备型号、设备类型等信息
- gdb时发出SIGTRAP信号的处理
- 【leetcode】【70】Climbing Stairs
- 常用oracle 数据库查询 重要!!
- JavaScript对浮点小数运算结果不精确bug的解决办法
- 【理解】 iOS沙盒(sandbox)机制(一)
- C#递归遍历树节点并且存储
- [转]how to split the ng-repeat data with three columns using bootstrap
- SQL 查询每个人第一次考试成绩
- UVA Arif in Dhaka (First Love Part 2) 10294 (polya定理)
- Python爬虫入门六之Cookie的使用
- Android AutoLayout全新的适配方式 堪称适配终结者
- Lightmap 色差、丢失|内存泄露...
- java中关于子类实例化时调用父类无参构造方法的问题
- 使用WinHttp实现POST方式用户模拟登录网站
- Nagios+NRPE安装备忘录(二)
- C++基础总结(3)--复杂数据类型
- 常用组件的写法
- 8个基本的引导工具的网页设计师