变换矩阵包括:平移、旋转、缩放。
平移矩阵:
旋转矩阵:
X轴旋转矩阵:
Y轴旋转矩阵:
Z轴旋转矩阵:
缩放矩阵:
变换矩阵,就是将一个向量依次进行 平移、旋转和缩放变换,
设平移矩阵为MatMove,旋转矩阵分别为 MatRotateX、MatRotateY、MatRotateZ,缩放矩阵为MatScale
在Unity中,处理旋转是按照 Z 、 X、Y轴顺序依次进行旋转,所以最终的旋转矩阵
公式一:MatRotate = MatRotateY x MatRotateX x MatRotateZ
矩阵相乘的顺序要从右往左读,关于旋转矩阵的相乘顺序,还有另一种
公式二:MatRotate = MatRotateZ x MatRotateX x MatRotateY
两种顺序刚好相反,这是因为关于旋转有两种解读方案,
第一种是,世界坐标系下依次进行Z轴旋转、X轴、Y轴旋转。对应公式一。
第二种是,先在世界坐标系下进行Z轴旋转,同时将世界坐标系一起旋转,得到新的临时坐标系1,
接着在临时坐标系1下进行X轴旋转,同时将临时坐标系1一起旋转,得到新的临时坐标系2,
最后在在临时坐标系2下进行Y轴旋转,得到最后的旋转结果。对应公式二。
Unity中按照第一种顺序相乘。
最终的变换矩阵,就是:
公式三:MatTransfer = MatMove x MatRotate x MatScale<