1.矩阵运算------四维齐次空间
——3D 坐标(x,y,z)利用4D 向量完成伸缩&旋转&平移变换
4D 向量是由3D 坐标(x,y,z)和齐次坐标w 组成,写作(x,y,z,w)。
在3D 世界中为什么需要3D 的齐次坐标呢?简单地说明一下,在一维空间中的一条线段上取一点x ,然后我们想转移x 的位置,那我们应该是x'=x+k,但我们能使用一维的矩阵来表示这变换吗?不能,因为此时一维的矩阵只能让x 点伸缩(因为是通过乘矩阵来实现,x •k 就是伸缩变化) 。但如果变成了一维的齐次空间
[k 1]就很容易地做到(因为平移就是有相对位置变化→使原来位置坐标不变用1来稳住,再加一个平移量k 就可以实现任何位置的平移) 。同样地,在二维空间中,某一图形如果不使用二维的齐次坐标,则只能旋转和伸缩,确不能平移。 因此,我们在3D 坐标中使用齐次坐标,是为了物体在矩阵变换中,除了伸缩旋转(这两种变化都是有固定点才可以实现,而3D 坐标中默认原点为固定点,所以不必在外加“原位置”的参考点) ,还能够平移,如下运算:
既然了解了使用齐次坐标的意义,我们下一步就要了解一下齐次坐标w 是什么意义。设w=1,此时相当于我们把3D 的坐标平移搬去了上(这句话说的很好,就相当于在抽象的,即在w=1的“平面”定义3D 的坐标。暂时存放一下,仅作为变换的工具和度量标准,因此后续使用时还是截取前3个元素),4D 空间的点投影到w=1平面上,齐次坐标映射的3D 坐标是(x/w,y/w,z/w),也就是(x,y,z )。(x,y,z )在齐次空间中有无数多个点(4D 空间中取一个特征为w 的元素,其中w 取值可以是任意数,因此称为无数)与之对应。所有点的形式是(kx,ky,kz,k ),其轨迹是通过齐次空间原点的“直线”(其实每个点相当于3D 的坐标世界)。
当w=0时,有很大的意义,可解释为无穷远的“点”,其意义是描述方向。这也是平移变换的开关,当w=0时,
此时不能平移变换了。这个现象是非常有用的,因为有些向量代表“位置”,应当平移,而有些向量代表“方向”,如表面的法向量,不应该平移。从几何意义上说,能将第一类数据当作" 点" ,第二类数据当作" 向量" 。可以通过设置w 的值来控制向量的意义。
3D 坐标(x,y,z)利用完成伸缩&旋转&平移变换
这里的伸缩旋转先不说,只说平移,因为平移就是有相对位置变化→使原来位置坐标不变用1来稳住,再加一个平移量k 就可以实现任何位置的平移。4D 向量仅作为变换的工具和度量标准,因此后续使用时还是截取前3个元素。
2. 矩阵左乘行变换,右乘列变换. 记住左行右列就行!
1.矩阵运算------四维齐次空间
——3D 坐标(x,y,z)利用4D 向量完成伸缩&旋转&平移变换
4D 向量是由3D 坐标(x,y,z)和齐次坐标w 组成,写作(x,y,z,w)。
在3D 世界中为什么需要3D 的齐次坐标呢?简单地说明一下,在一维空间中的一条线段上取一点x ,然后我们想转移x 的位置,那我们应该是x'=x+k,但我们能使用一维的矩阵来表示这变换吗?不能,因为此时一维的矩阵只能让x 点伸缩(因为是通过乘矩阵来实现,x •k 就是伸缩变化) 。但如果变成了一维的齐次空间
[k 1]就很容易地做到(因为平移就是有相对位置变化→使原来位置坐标不变用1来稳住,再加一个平移量k 就可以实现任何位置的平移) 。同样地,在二维空间中,某一图形如果不使用二维的齐次坐标,则只能旋转和伸缩,确不能平移。 因此,我们在3D 坐标中使用齐次坐标,是为了物体在矩阵变换中,除了伸缩旋转(这两种变化都是有固定点才可以实现,而3D 坐标中默认原点为固定点,所以不必在外加“原位置”的参考点) ,还能够平移,如下运算:
既然了解了使用齐次坐标的意义,我们下一步就要了解一下齐次坐标w 是什么意义。设w=1,此时相当于我们把3D 的坐标平移搬去了上(这句话说的很好,就相当于在抽象的,即在w=1的“平面”定义3D 的坐标。暂时存放一下,仅作为变换的工具和度量标准,因此后续使用时还是截取前3个元素),4D 空间的点投影到w=1平面上,齐次坐标映射的3D 坐标是(x/w,y/w,z/w),也就是(x,y,z )。(x,y,z )在齐次空间中有无数多个点(4D 空间中取一个特征为w 的元素,其中w 取值可以是任意数,因此称为无数)与之对应。所有点的形式是(kx,ky,kz,k ),其轨迹是通过齐次空间原点的“直线”(其实每个点相当于3D 的坐标世界)。
当w=0时,有很大的意义,可解释为无穷远的“点”,其意义是描述方向。这也是平移变换的开关,当w=0时,
此时不能平移变换了。这个现象是非常有用的,因为有些向量代表“位置”,应当平移,而有些向量代表“方向”,如表面的法向量,不应该平移。从几何意义上说,能将第一类数据当作" 点" ,第二类数据当作" 向量" 。可以通过设置w 的值来控制向量的意义。
3D 坐标(x,y,z)利用完成伸缩&旋转&平移变换
这里的伸缩旋转先不说,只说平移,因为平移就是有相对位置变化→使原来位置坐标不变用1来稳住,再加一个平移量k 就可以实现任何位置的平移。4D 向量仅作为变换的工具和度量标准,因此后续使用时还是截取前3个元素。
2. 矩阵左乘行变换,右乘列变换. 记住左行右列就行!