问题导读:
1、如何理解平移变换?
2、如何理解缩放变换?
3、如何理解旋转变换?
4、如何理解绕任意轴的三维旋转?
1、简介
旋转变换是计算机图像学中应用非常广泛的一种变换,为了后面解释的需要,我们也添加了平移变换、缩放变化等内容。文章重点介绍关于旋转的变换,包括二维旋转变换、三维旋转变换以及它的一些表达方式(旋转矩阵、四元数、欧拉角等)。
2、平移变换
将三维空间中的一个点 [x,y,z,1] 移动到另外一个点 [x′,y′,z′,1],三个坐标轴的移动分量分别为dx=Tx,dy=Ty,dz=Tz, 即
3、缩放变换
将模型放大或者缩小,本质也是对模型上每个顶点进行放大和缩小(顶点坐标值变大或变小),假设变换前的点是 [x,y,z,1],变换后的点是 [x′,y′,z′,1],那么
逆矩阵
平移变换矩阵的逆矩阵与原来的平移量相同,但是方向相反。
4、旋转变换
4.1 绕原点二维旋转
首先要明确旋转在二维中是绕着某一个点进行旋转,三维中是绕着某一个轴进行旋转。二维旋转中最简单的场景是绕着坐标原点进行的旋转,如下图所示:
如图所示点 (x,y)(x,y) 绕原点 逆时针旋转 θθ 角 ,得到点 (x′,y′)
注:此处为逆时针旋转,因此旋转过后的 (x′,y′) 坐标采用 (α+θ) 而不是 (α−θ)
矩阵解释:
极坐标解释:
此处不用直角坐标系解释,极坐标解释更便于理解
4.2 绕任意点的二维旋转
绕原点的旋转是二维旋转最基本的情况,当我们需要进行绕任意点旋转时,我们可以把这种情况转换到绕原点的旋转,思路如下:
首先将旋转点移动到原点处
执行如2所描述的绕原点的旋转
再将旋转点移回到原来的位置
也就是说在处理绕任意点旋转的情况下需要执行两次平移的操作。假设平移的矩阵是 T(x,y),也就是说我们需要得到的坐标 v′=T(x,y)∗R∗T(−x,−y)(我们使用的是列坐标描述点的坐标,因此是左乘,首先执行 T(−x,−y)
在计算机图形学中,为了统一将平移、旋转、缩放等用矩阵表示,需要引入齐次坐标。(假设使用2x2的矩阵,是没有办法描述平移操作的,只有引入3x3矩阵形式,才能统一描述二维中的平移、旋转、缩放操作。同理必须使用4x4的矩阵才能统一描述三维的变换)。
对于二维平移,如下图所示,P
P 点经过x和y方向的平移到 P′点,可以得到:
从平移和旋转的矩阵可以看出,3x3 矩阵的前 2x2 部分是和旋转相关的,第三列与平移相关。有了上面的基础之后,我们很容易得出二维中绕任意点旋转的旋转矩阵了,只需要把三个矩阵乘起来即可:
4.3 三维基本旋转
我们可以把一个旋转转换为绕基本坐标轴的旋转,因此有必要讨论一下绕三个坐标值 x,y,z的旋转。
本文在讨论过程中使用的是类似于OpenGL中定义的右手坐标系,同时旋转角度的正负也遵循右手坐标系的约定。如下图所示
4.3.1 绕X轴的旋转
4.3.2 绕Y轴旋转
4.3.3 绕Z轴旋转
4.4 小结
上面描述了三维变换中绕单一轴旋转的矩阵表达形式,绕三个轴旋转的矩阵很类似,其中绕y轴旋转的矩阵与绕 X
和 Z 轴旋转的矩阵略有点不同(主要是三个轴向顺序和书写矩阵的方式不一致导致的,绕三个不同坐标旋转轴以及其他二个坐标轴组成平面的顺序是: XYZ (绕 XX 轴) YZX(绕YY 轴) ZXY(绕 ZZ 轴),其中绕 Y 轴旋转,其他两个轴是 ZX,这和我们书写矩阵按
5、绕任意轴的三维旋转
绕任意轴旋转的情况比较复杂,主要分为两种情况,一种是平行于坐标轴的,一种是不平行于坐标轴的。
5.1 平行坐标轴
对于平行于坐标轴的,我们首先将旋转轴平移至与坐标轴重合,然后进行旋转,最后再平移回去。
5.2 不平行坐标轴
对于不平行于坐标轴的,可按如下方法处理。(该方法实际上涵盖了上面的情况)
绕任意轴的三维旋转可以使用类似于绕任意点的二维旋转一样,将旋转分解为一些列基本的旋转。绕任意轴旋转如下图所示:
- 将旋转轴平移至原点
- 将旋转轴旋转至 YOZ平面
- 将旋转轴旋转至于 Z轴重合
- 绕 Z轴旋转 θ度
- 执行步骤3的逆过程
- 执行步骤2的逆过程
- 执行步骤1的逆过程
图形详解过程:
步骤1:
将原旋转轴 u平移 v 至过原点 OO,对应矩阵操作
步骤2:
旋转操作,将 u 绕 z 轴旋转 α 角 至XOZ 平面,对应的图如下
步骤3:
步骤3也是一个旋转操作,将 u 绕 y 旋转 β 至与 x 轴重合,对应的图如下
步骤4:
步骤5:
此时再将 步骤3,2,1逆操作即可得到原始点 P 点绕旋转轴 u 旋转 θ 角后的点 Q;
5.3 α,β,θ 角度补充
为了全文的排版,以及读者体验,上述解释全部采用的 α,β,θ ,具体从何得来并没有做解释说明,在此将对 α,β,θ 的缘由做个详细解释。
作者:ViatorSun
来源:https://blog.csdn.net/ViatorSun/article/details/102611431
最新经典文章,欢迎关注公众号
|
|