前言:
相信大家都学过线性代数这门课程,线性代数是学习任何技术学科都需要掌握的科目之一,如果不熟悉线性代数,要想学习其他自然科学是非常困难的,各类计算机计算中,例如无人机集群的控制,显卡计算的图形变换,虚拟现实技术,再者各类3D游戏引擎,都需要大量的线性代数知识的支撑才能实现。此外,物理学、机械工程,统计学均会大量用到线性代数。
然而,线性代数却是门及其难懂的学科,行列式、矩阵、变换、秩、向量、相似矩阵、逆矩阵、特征值等,让我们头大,而大学学习也是理论知识,完全感受不到其作用,其意义。到实际使用时才发现,不仅忘完了,而且即使没忘,好像也很难知道怎么结合实际使用,正式由于以前学习线性代数严重缺乏几何直观思想,导致学不好,不会用。
写本版块的原由:
前不久工作中要使用矩阵进行空间变换,在计算机图形上的一些使用,例如,将模型平移,绕任意旋转,缩放等操作,而网上资料比较有限,大多都是在google复制或者转载的,内容介绍也比较简单,例如:
1、都会介绍绕XYZ轴的旋转,而没有绕任意轴旋转的算法。
2、有常规的得到转换矩阵而没有如何根据两个已知基得到之间的转换矩阵。
3、大多没讲清楚为什么前乘,为什么后乘,少有如何根据四元素得到旋转矩阵。
4、没有4*4矩阵16个元素每个元素的几何意义。
5、没有如何根据多点对应得到空间变换矩阵(用途举例:将空间位姿传感器得到的矩阵应用于模型,在计算机中显示到世界坐标系而非传感器本身的坐标系)
基于以上原因,本ID计划专门针对线性代数和空间变换矩阵相关的运算写一个版块,这个版块包含线性代数的本质介绍和空间变换矩阵的运算两部分组成。其中前者是对线性代数的几何意义,包含各类空间的介绍,后者会针对右手直角坐标系的空间变换作介绍,并附有相关的C++实现程序。
此版块力求简单易懂,会结合实际的空间几何知识、以及计算机程序演示,以达到一目了然的效果。当然,此版块不会对纯数学的理论知识做过多介绍,难免很多地方有不严谨的,也会有一些地方没有严格的证明或者没有写出理论支撑,希望大家指出不足,并理解,也希望大家对此版块知识的掌握更上一层楼。
写在最后:
本套博客是参考B站3Blue1Brown用户的教程做的,后续博文的部分图像资料也来自于3Blue1Brone的资料。另外,还对部分其他博主资料进行总结并介绍,相关博文末尾均会带上参考资料链接,特别感谢!