前言

# 前言

大家伙我是Fly哥最近业务也比较忙,有很多粉丝后台私信我问题,我没法一一解答,有一个同学问了我这个问题,如图:

粉丝问答

视频的话时间太长, 直接看文章吧,大家有啥问题的,都可以在知识星球提问就好了,我有时间就会解答。 大家一起进步,能把别人讲懂的才是对这个知识点真的理解了。 我这里都是免费的,不收钱的。这是今年新开的一个系列,粉丝解答系列文章。 觉得不错的可以点个赞。可能你存在的问题,别人也会有,不如详细的解决这个问题,也是节约时间,下次有人问同样的问题,可以直接看文档就好了,增加沟通效率, 最近想内推的可以私信我。

知识星球

在直观上的认知里,表达一个三维空间的坐标用 x, y, z 就足够了,那在三维空间里进行矩阵变换,用 3x3 的矩阵就够了,为什么需要 4x4 呢? 为了回答这个问题,下面我们先在几何意义上理解 向量和矩阵 之间的关系,然后通过 推导旋转矩阵平移矩阵,一步步来解开这个疑惑。

# 向量和矩阵

在几何平面上,我们可以把平面上任意一,当作与原点组成的一个 向量 来理解。

如图 ,A 点可以表示成向量 [公式] ;在 x 轴和 y 轴上各有 i 点(1, 0)和 j 点(0,1),同样的,让它们与原点组成向量,为了简化,我们用 [公式][公式] 表示这两个向量。

image-20220220135001596

image-20220220135031071

img

# 推导旋转矩阵

我们现在把整个坐标轴绕原点逆时针旋转 [公式]

image-20220220135710465

image-20220220135732023

image-20220220135925022

结合图形和计算,我们可以这样理解这个二维矩阵:二维矩阵代表一个坐标系里的两个基向量,而在这个坐标系里的点与原点组成的向量,都可以用这两个基向量的变换来表示。那么旋转一个点,可以转换成旋转这个点所在的坐标系,从而通过变化的基向量求出旋转后的点的位置。

其实这种变换在数学上称作 线性变换 ,线性变换是通过 矩阵乘法 来实现

线性变换:是在两个**向量空间 (opens new window)**(包括由函数构成的抽象的向量空间)之间的一种保持向量加法和标量乘法 (opens new window)的特殊映射

线性变换在几何直观上有如下特点: - 变换前后,直线仍然保持是直线的状态 - 变换前后,原点保持固定,不会变化

image-20220220135939693

# 推导平移矩阵

那么平移操作,能不能也用这种矩阵与向量相乘的形式呢?我们再次回到二维平面,看看将 A 点平移到 B 点的情况是怎样的。

image-20220220135244427

image-20220220135227647

image-20220220140010415

我们可以通过向量加法的 平行四边形法则 加深理解,如下图:

image-20220220135214256

image-20220220135202492

对于平移这种操作,我们无法仅仅通过矩阵乘法来实现

而实际上,平移这种操作属于 仿射变换

仿射变换,又称仿射映射,是指在几何中,对一个向量空间进行一次**线性变换 (opens new window)**并接上一个平移,变换为另一个向量空间。

仿射变换在几何直观上,相比线性变换,它不需要保证变换前后坐标原点不变。

如下图,从 A 点平移到 B 点,我们换一个角度思考,这次不移动点,而是移动整个坐标轴,同样可以达到平移 A 点到 B 点的需求,但是坐标原点移动到了 O' 点(1,3)。

img

image-20220220135120367

我们希望构造的是像下面这种矩阵乘法的等式,这样才能用一个通用的计算模式来处理坐标点的变换。

image-20220220140031686

到这里,我们终于要请出 齐次坐标 了。

齐次坐标就是将一个原本是 n 维的向量用一个 n+1 维向量来表示,是指一个用于投影几何里的坐标系统,如同用于欧氏几何 (opens new window)里的笛卡儿坐标一般。

用一个通俗的讲法是,我们需要 升维 来处理这个问题。

通过增加一个维度,我们可以在高维度上,通过线性变换来处理低维度的仿射变换。

image-20220220140044188

# 总结

至此,我们可以回答最开始的问题了,为什么矩阵变换是 4x4 的矩阵呢?

我们来想象这样一个场景:如果我要让顶点坐标 (opens new window)旋转一定角度后,再平移一段距离,那么这里面的操作就涉及 3x3 矩阵的计算和 4x4 矩阵的计算,如果不统一起来,这种连续变换的计算操作将很复杂。

所以如果要用矩阵乘法来统一所有的平移、旋转等等变换计算,为了照顾到平移这类仿射变换,统一用 4x4 矩阵来计算既能满足场景又方便计算。

上一次更新时间: 2021/12/26 下午6:37:38