目录
一.2D变换
1.缩放(Scale)
2.反射(Reflection)
这是关于Y轴对称,同理想得到关于X轴对称只需要将第二列的1改成-1
3.切变(Shear)
变换后X=x+ay,Y不变
4.旋转(Rotation)
下面的图片证明了为什么旋转矩阵的转置就是它的逆矩阵
5.线性变换
如果一种变换可以写成矩阵*输入坐标并且可以得到输出坐标,那么这种变换可以叫做线性变换
对于变换,可以用矩阵来表示
6.平移(Translation)
平移变换并不能写成矩阵乘输入向量的形式,因此平移并不是线性变换
为了不让平移变换成为一个特殊的变换,因此引入了齐次坐标这个概念。
7.齐次坐标
同时,齐次坐标下点和向量的加减也是具有意义的
两个点相加以后得到的其实是两个点连线以后的中点
8.仿射变换
仿射变换=线性变换+平移
仿射变换包含了线性变换和平移,但其实是先进行线性变换后进行平移,三维空间也是如此
因此在上面的先旋转后平移的操作就可以将两个矩阵进行组合成一个矩阵
二.三维变换
1.3D空间下的齐次坐标
2.缩放.平移.旋转矩阵
这里绕Y'轴旋转的矩阵有些不一样是因为Y轴是Z叉乘X,但计算的时候是先算X坐标再算Z坐标,与叉乘顺序相反,所以Y旋转是逆的
任意一个复杂的旋转都可以转变成分别绕三个轴的旋转
这三个旋转的角度也被叫做欧拉角,欧拉角通常使用三个角度来描述旋转,这三个角度分别表示绕三个坐标轴(通常是x、y和z轴)的旋转量。这三个旋转通常按照一定的顺序进行,这个顺序称为“旋转顺序”或“欧拉角序列”。常见的欧拉角序列包括:
-
绕固定坐标轴的旋转(XYZ顺序):首先绕X轴旋转,然后绕Y轴,最后绕Z轴。
-
绕固定坐标轴的旋转(ZYZ顺序):首先绕Z轴旋转,然后绕Y轴,最后再绕Z轴。
-
绕移动坐标轴的旋转:旋转顺序取决于物体当前的姿态,因此不是固定的
欧拉角的优点是它们直观且易于理解,可以用于描述物体在三维空间中的旋转。然而,欧拉角也有一些缺点,其中一个主要问题是“万向锁”现象,当两个旋转角非常接近时,会导致旋转过程中的奇异性。因此,在某些情况下,使用四元数等其他方法可能更为稳定和高效。
3.罗德里格斯旋转公式
这个公式给出了绕任意轴旋转角度的矩阵,旋转轴是你,旋转角度是,默认旋转轴过原点
如果旋转轴不过原点就先平移到原点,旋转之后再平移回去
4.四元数
更多的用来计算旋转间的插值。比如根据旋转15度和旋转25度的公式相加之后求平均并不是旋转20度的公式,但是四元数可以方便的根据这两个旋转角度插值计算出旋转20度的公式。
四元数(Quaternion)是一种数学工具,用于表示三维空间中的旋转。它是复数的扩展,由一个实部和三个虚部组成,通常表示为:
q = w + xi + yj + zk
其中:
- q 是四元数。
- w 是实部。
- x、y、z 是虚部,分别与i、j、k相对应。
四元数具有以下性质和特点:
-
旋转表示:四元数可以用来表示三维空间中的旋转,其旋转性质比欧拉角更为稳定,不容易出现奇异性问题。
-
组合旋转:四元数支持旋转的组合,可以通过乘法操作来实现多个旋转的叠加。
-
插值:四元数可用于实现平滑的旋转插值,例如在计算机图形学中用于动画和相机路径插值。
-
线性插值:在四元数空间中,线性插值对应于旋转的恒定速度。
-
绕X轴旋转25度的四元数表示:
- 实部 (w) = cos(12.5度),其中12.5度是25度的一半。
- x 虚部 (i) = sin(12.5度),表示绕X轴旋转的方向。
- y、z 虚部均为0,因为没有绕Y轴或Z轴的旋转。
-
绕X轴旋转15度的四元数表示:
- 实部 (w) = cos(7.5度),其中7.5度是15度的一半。
- x 虚部 (i) = sin(7.5度),表示绕X轴旋转的方向。
- y、z 虚部均为0,因为没有绕Y轴或Z轴的旋转。
-
以使用四元数插值来在绕X轴旋转25度和15度的四元数之间进行插值。这是通过球面线性插值(Slerp)来实现的,以下是一种方法:
首先,将25度和15度的四元数表示为Q1 和 Q2。
Q1:绕X轴旋转25度的四元数 Q2:绕X轴旋转15度的四元数
然后,你可以使用球面线性插值的公式来计算绕X轴旋转20度的四元数 Q_interp:
Q_interp = (sin((1 - t) * θ) * Q1 + sin(t * θ) * Q2) / sin(θ)
其中:
- t 是插值参数,通常在 [0, 1] 范围内,表示你希望从Q1 过渡到 Q2 的程度。
- θ 是 Q1 和 Q2 之间的夹角,可以通过四元数的点积(内积)来计算。θ = acos(Q1 · Q2)(· 表示四元数的点积)。