赞
踩
无论是影视,还是动画抑或是游戏,都需要描述一个物体的变换,因此,理解变换的原理,才能进一步处理或渲染图像,也就是说,变换是必须的。
(1)缩放:
简单的范围变换,利用表达式即为:x' = 0.5x ; y' = 0.5y,而将其转换为矩阵即为
对应的s = 0.5,展开即为刚才的表达式,第一行和第二行的s即为对x和y的变换。
(2)翻转
只需要将x的范围变为负的就完成了变换。
(3)拉伸
这个需要定点理解:
在a点,x的变换为x' = x+a,a = y,y = 1;
在b点,x' = x+0.5a,0.5a = y ,y = 0.5。由规律可得,x' = x+ay,转换为矩阵的形式
(4)旋转
对应的简单的正弦余弦变换
(5)平移
在该矩阵中,额外开创了一行一列,为了保证值不变,最下面一行的值为(0,0,1),而在最后一列,tx和ty对应了对x和y的平移变换,如下图所示
(6)组合变换
任何二维位置的变换都可以用上面的几种变换组合而成,就比如上面这个二维变换,可以先逆时针旋转45度,然后再向右平移到对应的位置,计算过程如下:
计算时的顺序为从右到左,先逆时针旋转45度,再沿着正方向移动1个单位长度。
注意:注意变换的顺序,“先逆时针旋转45度,再沿着正方向移动1个单位长度”和“先沿着正方向移动1个单位长度,再逆时针旋转45度”这得到的结果是不同的。
三维变化和二维变换非常相似,唯一需要注意的是,在旋转时因为是叉乘,所以有一个坐标系的变换和其余两个不同,需要额外注意一下。
对应的矩阵变换如下面所示:
1.坐标变换
(1)范围:
(2)平移:
(3)旋转:
2.自由变换:
在实际应用中,自由变换的情况会更多一些,在许多三维大片中,角色的复杂变换都需要利用自由变换来处理,例如飞机的相关变换:
这时就引出了一个公式——罗德里格斯旋转公式:
其中,最右边的矩阵为矩阵的叉乘变换,如果想推导一下,用图解释的话即为:
详细推导请参考:
[数学]罗德里格旋转公式(Rodrigues' rotation formula) - 知乎
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。