2D 计算机图形学基础速建——2

2D计算机图形学------线性代数基础(基于3b1b)

前言

​ 笔者查看的是3b1b大佬的课程,觉得非常优秀------算是把抽象的线性代数给化简了,变得非常的直观,这里把笔记整理一份,备忘用。

A. 向量与线性组合 --- "箭头与拼图"

​ 向量就是从原点出发的箭头。把它们线性组合就是用标量放缩再加在一起------把空间"拼"出来。所以,我们发现一些向量可以被一些更加基础的向量合成出来。比如说,我们在一个2D的XY笛卡尔坐标系下,利用(0, 1)和(1, 0)就可以把其他所有的二维向量全部表达,这两个向量就成为了线性独立的基向量。这也是为什么2D向量是2D的,因为两个线性无关的向量就可以表达这个空间下的所有向量了。

B. 矩阵 = 线性变换 --- "把空间扭一扭"

矩阵不是"表格",而是把每个向量映射到另一个向量的规则(把整个平面一次性扭曲)。可看成把基向量变换成新的向量列。笔者非常喜欢3b1b将矩阵解释为对基向量的变换集合。

这个思路很简单,A主题中我们早就说过了------任何坐标系下的所有向量都可以表达为基向量的某种线性组合,所以任何对某一个向量的变换,都可以由对基向量施加变换后在依照新的基向量按照之前线性组合的方式生成这一过程描述。

利用带数学公式的说明,对v⃗=ax⃗+by⃗\vec{v} = a\vec{x} + b\vec{y}v =ax +by 施加以M矩阵,即尝试做v′⃗=Mv⃗\vec{v'} = M \vec{v}v′ =Mv ,实际上都可以被写作v′⃗=a(Mx⃗+My⃗)=a(x′⃗+y′⃗)\vec{v'} = a(M\vec{x} +M\vec{y}) = a(\vec{x'} + \vec{y'})v′ =a(Mx +My )=a(x′ +y′ ),这也就是说明,M矩阵无非就是表达对坐标系的变换。

因此,把矩阵看作是一个运算符函数,比看作是一个数更加的准确。矩阵的乘法就是函数的复合,很显然,我们没办法说明复合映射算子f{g(x)}f\{g(x)\}f{g(x)}同看起来相似但其实完全不是一回事情的复合映射算子g{f(x)}g\{f(x)\}g{f(x)}等价

C. 线性方程、解空间 --- "几何求交"

线性方程组的每一个方程都在描述一个几何体,无非是说明到底是直线,平面还是其他任何集合体而已,将这个图形集合起来(联合为方程组),无非就是求解他们的交。所以对于线性方程:无解 = 直线/平面没有交点;无穷解 = 有一族交集(自由度),唯一解 = 精确交点(可逆矩阵)。

D. 行列式 --- "有向面积/体积缩放"

det(A) 告诉你变换 A 把单位面积放大/缩小了多少(并带有符号代表是否翻转)。所以,当det(A)成为0,说明这是一个不可逆的变换,因为任何一个空间经过A矩阵的作用都会丧失原先的信息,反过来看,我们也就没办法将变化后的结果还原。实数乘法就能说明:0乘以任何数都是0,那反过来,0除以0可以是任何数,也就没有意义了------你说什么都是对的。因为逆向操作总是成立。

E. 逆矩阵与可逆性 --- "可撤销的变换"

逆矩阵就是一个可以撤销(存在逆操作的)变化的反变化,也就是施加M矩阵后的v′⃗\vec{v'}v′ 想要还原回来就必须施加一个M−1M^{-1}M−1出来,注意作用是从右向左的:v⃗=M−1v′⃗=M−1Mv⃗=v⃗\vec{v} = M^{-1}\vec{v'} = M^{-1}M\vec{v} = \vec{v}v =M−1v′ =M−1Mv =v 。换而言之,M−1M^{-1}M−1可以撤销先前MMM矩阵的影响。前提是它可以M是撤销的,这就要求我们的det ≠ 0

F. 特征向量 / 特征值 --- "不变方向"

这个比较有意思,他说明的是------在M矩阵施加对坐标系的线性变化中,居然会有向量只是纯粹的拉伸而不会改变方便。我们立马就能说:这些向量是特征向量 ,他们的伸缩因子就是特征值

为此,我们如何把这些向量找出来呢?很简单,我们按照他想要的求解方程:Mv⃗=λv⃗M\vec{v} = \lambda \vec{v}Mv =λv 就好了,其中λ可以是负(方向翻转)或复数(2D 旋转对应复特征)。所以我们发现,特征向量可以把复杂变换分解为沿若干独立方向的伸缩(对角化就是把矩阵表成对角形式)。

相关推荐
我不是程序猿儿12 分钟前
【嵌入式】编码器计数倍频,机械一格与电气计数
stm32·单片机·嵌入式硬件·学习
阳光永恒73614 分钟前
C++编程全套学习资料免费分享 | 从零基础到进阶(含视频课/PPT课件/源码/项目实战)
c++·学习·编程学习·免费资料·零基础学c++·c++资料
Дерек的学习记录15 分钟前
Unreal Engine 5:前置知识和入门基础
学习·ue5
笑鸿的学习笔记15 分钟前
Windows笔记之windows11和windows10启动速度优化
windows·笔记
EnglishJun23 分钟前
ARM嵌入式学习(八)--- 汇编应用:点亮led
汇编·arm开发·学习
PNP Robotics23 分钟前
PNP机器人亮相第二届机器人灵巧手国际创新大会
人工智能·学习·机器人·开源
2501_9181269126 分钟前
学习所有python写浏览器的语句
开发语言·python·学习
猹叉叉(学习版)30 分钟前
【系统分析师_知识点整理】 4.计算机网络与分布式系统
笔记·计算机网络·软考·系统分析师
hjxu201610 小时前
【OpenClaw 龙虾养成笔记一】在远程服务器,使用Docker安装OpenClaw
服务器·笔记·docker
sinat_2554878110 小时前
读者、作家 Java集合学习笔记
java·笔记·学习