目录
前言:
该部分为GAMERS101课程(第三讲 Transformation)中关于矩阵转换的基础知识整理,前置知识为矩阵的基本运算
一、什么是矩阵的本质?
Q: What is the essence of matrix?
A: Transform.
二、矩阵的几个基本变换应用
说明:以下所有操作都是暂时基于二维变换,不涉及三维变换操作
2.1 Scale 缩放
其中s为缩放系数
2.2 Reflection 镜像
沿着y轴做镜像
2.3 Shear 斜切
沿着x轴做斜切,a控制着斜切程度
2.4 Rotate 旋转
θ为旋转角度,默认以逆时针,绕原点为准
以上四种变换为线性变换(Linear Transform),他们的形式可以统一写为
2.5 Translation 平移
平移不是线性变换,其矩阵的形式与上面四种不同
因此引入齐次坐标的概念
三、齐次坐标 Homogenous Coordinates
即在原先矩阵的基础上多加一行一列,这样可以使平移变换也写成的形式
因此平移变换可以写为以下形式:
注:w的含义可以理解为,当其为1时,是一个齐次坐标写法的点point;当其为0时,是一个向量vector
vector + vector = vector
point - point = vector
point + vector = point
point + point = midpoint*2
因此,上述变换矩阵M可以写为以下所示:
3.1 Scale
3.2 Rotation
3.3 Translation
由于矩阵运算不满足交换律,但是满足结合律,所以
最后,在三维空间中点的变换矩阵如下所示:
四、其他
在做C# for Grasshopper开发中,物体有scale和rotation方法,但是时常没有translation方法,就是因为此时的坐标使用了float3来储存,所以难以进行平移变换。此时需要定义一个变量(一般var xf),将所有变换操作写在一个Transform中应用,其原理就在于此。