https://www.zhihu.com/question/304059390/answer/552179956
正交矩阵是方块矩阵,行向量和列向量皆为正交的单位向量。
行向量皆为正交的单位向量,任意两行正交就是两行点乘结果为0,而因为是单位向量,所以任意行点乘自己结果为1。
对于3x3正交矩阵,每行是一个3维向量,两个3维向量正交的几何意义就是这两个向量相互垂直。
所以3x3正交矩阵的三行可以理解为一个3D坐标系里的三个坐标轴,下面是3*3正交矩阵M,
x1, x2, x3, // x轴
y1, y2, y3, // y轴
z1, z2, z3,// z轴
1, 0, 0, // x轴
0, 1, 0, // y轴
0, 0, 1, // z轴
一个向量乘以3x3正交矩阵的几何意义就是把这个向量从当前坐标系变换到这个矩阵所表示的坐标系里,比如下面的矩阵M1,
0, 1, 0,
1, 0, 0,
0, 0, 1,
一个向量(1, 2, 3)右乘这个矩阵M1得到新的向量(2, 1, 3),就是把原向量从原坐标系变换到一个新的坐标系。
新坐标系的x轴在原坐标系里是(0,1,0),即落在原坐标系的y轴上,
新坐标系就是把原坐标系的x和y轴对调,所以这个正交矩阵M1作用于向量(1,2,3)后把向量的x和y分量对调了。
————分割线 分割线 分割线 分割线 分割线 分割线 ————
正交矩阵的定义“行向量和列向量皆为正交的单位向量”带来了另一个好处:正交矩阵的转置就是正交矩阵的逆,比普通矩阵求逆矩阵简单多了。
下面解释一下 为什么正交矩阵的转置就是正交矩阵的逆:
还是开头说的正交矩阵M:
x1, x2, x3, //rowx
y1, y2, y3, //rowy
z1, z2, z3, //rowz
每行都是单位长度向量,所以每行点乘自己的结果为1。
任意两行正交就是两行点乘结果为0。
矩阵M的转置矩阵MT是:
x1, y1, z1,
x2, y2, z2,
x3, y3, z3,
两个矩阵相乘 Mmul = M * MT:
rowx * rowx, rowx * rowy, rowx * rowz,
rowy * rowx, rowy * rowy, rowy * rowz,
rowz * rowx, rowz * rowy, rowz * rowz,
点乘自己结果为1,点乘别的行结果为0,所以Mmul等于单位矩阵
1, 0, 0,
0, 1, 0,
0, 0, 1,
逆矩阵的定义就是逆矩阵乘以原矩阵等于单位矩阵,所以,
正交矩阵的转置就是正交矩阵的逆。