10 沉浸式线性代数 Chapter 1: Introduction (Immersive Linear Algebra)
向量技巧/常识/方法 | 举例用途 | Three.js 方法 |
---|---|---|
向量加减法 | 计算物体的相对位置、运动轨迹等 | Vector3.add() , Vector3.sub() |
向量缩放 | 调整物体的大小、速度等 | Vector3.multiplyScalar() , Vector3.divideScalar() |
向量点乘 (Dot Product)即点积 | 计算两个向量的夹角、判断方向是否相同等 | Vector3.dot() |
向量叉乘 (Cross Product)叉积 | 计算两个向量的垂直向量、判断方向的左右关系等 | Vector3.cross() |
向量归一化 (Normalization) | 将向量缩放到单位长度,用于计算方向、光照等 | Vector3.normalize() |
向量线性插值 (Lerp) | 在两个向量之间进行平滑过渡,用于动画、渐变效果等 | Vector3.lerp() |
向量投影 (Projection) | 计算一个向量在另一个向量上的投影,用于碰撞检测、阴影计算等 | Vector3.projectOnVector() , Vector3.projectOnPlane() |
向量反射 (Reflection) | 计算一个向量关于另一个向量的反射向量,用于光线追踪、物理模拟等 | Vector3.reflect() |
向量旋转 (Rotation) | 利用四元数或旋转矩阵对向量进行旋转变换,用于物体的旋转运动、相机的视角控制等 | Vector3.applyQuaternion() , Vector3.applyMatrix4() |
向量分解 (Decomposition) | 将一个向量分解为多个分量,例如将速度向量分解为水平和垂直分量,用于物理模拟、碰撞检测等 | 需要手动计算分量,例如 vector.x , vector.y , vector.z |
向量
一个平面可以由两个非平行的向量确定,而这两个向量的叉积即为法线向量
根据向量投影的定义,对于一个向量v和一个单位向量u,v在u方向上的投影向量proj_vu可以通过以下公式计算:
proj_vu = dot(v, u) * u
其中dot(v, u)是v和u的点积,表示v在u方向上的投影长度,u是一个单位向量,表示u的长度为1,方向与投影方向相同。
在这个例子中,杯子的移动向量为向右的单位向量(1,0,0),桌面法线向量为向上的单位向量(0,1,0)。根据上述公式,投影向量proj_right_up可以计算为:
proj_right_up = dot((1,0,0), (0,1,0)) * (0,1,0) = 0 * (0,1,0) = (0,0,0)
我不懂向量运算, dot((1,0,0), (0,1,0)) * (0,1,0) 的具体计算过程是?
首先,dot((1,0,0), (0,1,0))表示向量(1,0,0)和向量(0,1,0)的点积,也称为内积。点积的计算公式是将两个向量对应位置的数值相乘,然后将乘积相加,即:
dot((1,0,0), (0,1,0)) = 1*0 + 0*1 + 0*0 = 0
所以,dot((1,0,0), (0,1,0))的结果为0。
接下来,我们将0乘以(0,1,0)。这个操作实际上是将向量(0,1,0)的每个分量都乘以0,得到的结果向量仍然是(0,1,0)本身。因此,
dot((1,0,0), (0,1,0)) * (0,1,0) = 0 * (0,1,0) = (0,0,0)
所以,这个计算的结果是(0,0,0)。
总结一下,这个计算的过程是:将向量(1,0,0)和向量(0,1,0)做点积,得到0,然后将0乘以向量(0,1,0),得到的结果是(0,0,0)。
点乘 (Dot Product)即点积
- 定义是人为制定的,它基于数学和物理学中的需要来定义
- 点积用来测量两个向量的相似性和相对角度关系
- 点积(内积)是两个向量的积,它表示为向量A 和向量B 之间的夹角的余弦值。
- 点积的计算公式为
A·B = |A| * |B| * cos(θ)
, 其中|A|和|B|分别是向量A和向量B的模长,θ是两个向量之间的夹角。 - 通过点积的值可以判断两个向量是否垂直,在一定程度上点积可以表示向量之间的相似性
- 几何意义:点乘反映了一个向量在另一个向量方向上的投影长度与该方向向量长度的乘积。
- 𝑎⋅𝑏什么时候可以代表投影长度?
- 当 𝑏 是单位向量时,即 ∣𝑏∣=1,点积简化为:
- 𝑎⋅𝑏=∣a∣cos(θ)
- 即 𝑎 在 𝑏 方向上的投影长度
- 当 𝑏 是单位向量时,即 ∣𝑏∣=1,点积简化为:
- 记住: 向量 𝑣 自身的点积𝑣 ·𝑣 ,等于 ∣𝑣∣平方,即 𝑣 的长度的平方
叉乘 (Cross Product)叉积
- 叉积用来计算两个向量间垂直的向量并且用来计算面积,旋转
- 叉积(外积)是两个向量的积,表示为一个新向量。
- 叉积是一个向量,它的方向是两个向量所在平面的法向量,大小是两个向量所在平面面积的两倍。叉积的计算公式为 A X B = |A| * |B| * Sin(θ) * n(单位法向量),
- 叉积的结果是一个垂直于两个向量的向量。
- 叉积的应用非常广泛,在很多场景下都有用处。例如在几何学中, 叉积用于求两个向量所在平面的法向量;
矩阵
T如何移动一个点,举例矩阵相乘的详细步骤
假设有一个点P(x, y, z),现在想要将该点沿着X轴平移2个单位,沿着Y轴平移3个单位,沿着Z轴平移4个单位。可以使用变换矩阵来实现这个操作。变换矩阵可以表示为:
T = [1 0 0 2]
[0 1 0 3]
[0 0 1 4]
[0 0 0 1]
其中,第一列表示X轴的变换,第二列表示Y轴的变换,第三列表示Z轴的变换,最后一列表示平移向量。
现在,需要将点P应用该变换矩阵,以实现平移操作。可以按照以下步骤进行矩阵相乘:
1. 将点P表示为一个4维向量,即增加一个齐次坐标分量w=1:
P' = [x]
[y]
[z]
[1]
2. 将变换矩阵T表示为一个4x4的矩阵:
T = [1 0 0 2]
[0 1 0 3]
[0 0 1 4]
[0 0 0 1]
3. 将点P'和变换矩阵T相乘,得到一个新的4维向量P'':
P'' = T * P' = [1 0 0 2] [x]
[0 1 0 3] * [y]
[0 0 1 4] [z]
[0 0 0 1] [1]
4. 对于新的4维向量P'',将其前三个分量(x, y, z)除以最后一个分量(w=1),即可得到平移后的新点坐标:
x' = P''[0] / P''[3] = x + 2
y' = P''[1] / P''[3] = y + 3
z' = P''[2] / P''[3] = z + 4
综上,通过矩阵相乘的方式,可以将点P沿着X轴平移2个单位,沿着Y轴平移3个单位,沿着Z轴平移4个单位。
这种方法非常高效,可以同时对多个点进行平移操作,而且可以方便地组合不同的变换操作。
旋转
《沉浸式线性代数》
2 向量2.1 点和向量2.2 向量加法2.3 标量向量乘法2.4 向量运算的性质2.5 向量基和坐标2.6 超过三维的向量空间2.6.1 一般定义2.7 摘要
3 点积3.1 介绍3.2 定义与应用3.2.1 单位向量与归一化3.2.2 投影3.2.3 规则与性质3.3 正交归一基3.3.1 正交归一基中的向量长度3.4 不等式3.5 一些例子3.6 直线和平面3.6.1 直线3.6.2 平面3.7 关于光线追踪的后续
4 向量积4.1 介绍4.2 方向4.3 向量积的定义4.4 规则和性质4.5 标量三重积4.6 向量三重积4.7 示例4.8 对引言示例的后续
5 高斯消元法5.1 引言5.2 示例5.3 高斯消元法5.4 特殊情况5.5 同质情况5.6 隐式和显式形式5.7 理论基础5.7.1 高斯消元规则5.7.2 一般情况5.8 线性依赖与独立5.9 跨越5.10 基变换
6 矩阵6.1 介绍6.2 定义6.3 矩阵运算6.3.1 标量乘法6.3.2 矩阵加法6.3.3 矩阵乘法6.4 一些有用的二维和三维矩阵6.4.1 二维6.4.2 三维6.5 矩阵运算的性质6.6 矩阵的逆6.7 逆矩阵、独立性和跨度6.8 基底变换6.9 正交矩阵6.10 对引言示例的后续
7 行列式7.1 介绍7.2 定义7.3 排列与行列式7.4 转置、乘法和逆7.5 沿列展开7.6 伴随矩阵7.7 克拉默法则7.8 行列式、独立性与可逆性
8 秩8.1 线性子空间8.2 零空间和零度8.3 列空间、行空间与秩8.4 秩与行列式8.5 对引言示例的后续
9 线性映射9.1 引言9.2 变换矩阵9.3 复合线性映射9.4 逆映射
10 特征值和特征向量10.1 引言10.2 特征值和特征向量10.3 计算特征值和特征向量10.4 对角化10.5 对称矩阵的对角化10.6 向量在线性映射中的最大延伸10.7 特征值和特征向量的其他结果10.8 特征值和特征向量的实用性10.9 展望
1. 范数(Norm)
范数可以简单理解为“长度”。我们来看几个具体的例子:
欧几里得范数($L_2$范数)
假设我们有一个二维向量 $\mathbf{v} = (3, 4)$。这个向量可以表示为从原点到点 (3, 4) 的一条线段。我们可以计算这个向量的长度(即范数):
$$ | \mathbf{v} |_2 = \sqrt{3^2 + 4^2} = \sqrt{9 + 16} = \sqrt{25} = 5 $$
这意味着从原点到点 (3, 4) 的距离是 5。
$L_1$范数
同样对这个向量 $\mathbf{v} = (3, 4)$,我们可以计算它的 $L_1$范数:
$$ | \mathbf{v} |_1 = |3| + |4| = 3 + 4 = 7 $$
这个范数表示向量各分量绝对值的总和。
$L_\infty$范数
对于同样的向量 $\mathbf{v} = (3, 4)$,$L_\infty$ 范数是:
$$ | \mathbf{v} |_\infty = \max { |3|, |4| } = 4 $$
这个范数表示向量中最大分量的绝对值。
2. 内积(Inner Product)
内积可以理解为向量之间的“相似度”或“关联性”。我们来看具体的例子:
欧几里得内积
假设我们有两个二维向量 $\mathbf{u} = (1, 2)$ 和 $\mathbf{v} = (3, 4)$。我们可以计算它们的内积:
$$ \langle \mathbf{u}, \mathbf{v} \rangle = 1 \cdot 3 + 2 \cdot 4 = 3 + 8 = 11 $$
这个内积的结果 11 可以用来反映这两个向量的关系。内积越大,表示这两个向量在同一方向上的分量越大,越“相似”。
几何意义
内积还与向量之间的角度有关。内积可以表示为:
$$ \langle \mathbf{u}, \mathbf{v} \rangle = | \mathbf{u} | | \mathbf{v} | \cos \theta $$
其中 $\theta$ 是这两个向量之间的夹角。比如,如果 $\theta = 0$(即两个向量方向相同),则内积等于两个向量范数的乘积;如果 $\theta = 90^\circ$(即两个向量垂直),则内积为 0。
3. 总结
- 范数:用来测量向量的“长度”或“大小”。例如,向量 $(3, 4)$ 的欧几里得范数是 5,表示从原点到 (3, 4) 的距离。
- 内积:用来测量两个向量之间的“相似性”或“关联性”。例如,向量 $(1, 2)$ 和 $(3, 4)$ 的内积是 11,表示它们在某种程度上是相互关联的。