games101-2-Linear_algebra

线性代数

向量基础知识

向量(矢量):方向和长度,不关心绝对开始位置,只要A和B的相对位置不变,平移后还是相同向量。

img

向量的长度:img

单位向量(只关心方向不关心长度),将向量的每一个分量除以长度,也叫向量的标准化:img

向量操作:平行四边形法则和三角形法则(三角形法则也可以适用于多个向量首尾相连)。向量相加是将每个对应的分量分别相加,相减同理。

image-20230510234841798

向量的代数表示:将向量放入直角坐标系,X、Y为相互垂直的两个单位向量。用该方法向量就可以用x、y两个数表示,如下向量用4、3表示。将向量放入坐标系可以更方便的计算向量的长度。如向量(4,3)默认是过原点的。

img

图形学上默认向量是列向量:img

列向量转置和向量的长度计算:img img

当把一个向量加/减/乘/除一个标量,可以简单的把向量的每个分量分别进行该运算。数学上是没有向量与标量相加运算的,但是很多线性代数的库都对它有支持。向量取反就是将每一个分量取反。

向量的点乘

img

两个向量的点乘结果是一个数,点乘可以快速计算两个向量的夹角。例如两个单位向量点乘的结果就是他们夹角的余弦。

img img

点乘的性质:

img

点乘的代数计算(对应元素相乘,最后将所有乘积相加):

img

点乘的作用:

(1)计算一个向量在另一个向量上的投影

img

​ b向量在a向量上的投影的方向为a向量的方向,投影的大小为||b||cosθ,所以b向量在a向量上的投影为||b||cosθa,cosθ通过a向量和b向量的点乘获得。

计算向量的投影可以对向量进行分解

img

(2)通过点乘结果的正负判断向量在前还是在后(方向基本一致,垂直或者相反),在图形学上通过点乘结果判断两个向量的接近程度。例如对于两个单位向量,如果这两个向量方向接近,则点乘结果接近1;如果方向垂直,点乘结果接近0;如果方向相反,点乘结果接近1.

img

向量的叉乘

img

两个向量的叉乘结果是一个新向量,该向量垂直于原来两个向量所在的平面。新向量的大小为img,新向量的方向通过右手螺旋定则确定。

向量叉乘的性质如下,注意一个向量叉乘自己得到的是长度为0的向量,而不是0。两个向量的叉乘可以得到一个三维空间的坐标系(右手坐标系x叉乘y是正z是右手坐标系,opengl使用右手坐标系):

image-20230510234944416

向量叉乘的代数运算:

image-20230510235008653

向量叉乘的作用:

(1)判断左右位置关系

如下在X、Y平面,判断向量b在向量a的左侧还是右侧。计算向量a叉乘向量b,如果结果为正,则向量b在向量a在左侧,即a-b是逆时针;如果结果为负,则向量b在向量a在右侧,即a-b是顺时针。

image-20230515155411695

(2)判断内外

如下三角形,ABC按照逆时针顺序输入。AB叉乘AP,结果为正,点p在AB左侧;BC叉乘BP,结果为正,点p在BC左侧;CA叉乘CP,结果为正,p在CA左侧;结论p在三角形内部。如果ABC按照顺时针顺序输入,如果p在三条边右侧,则p在三角形内部。所以不管顺时针还是逆时针输入,p如果在三角形内部,p必须在三条边的同一边。在三角形光栅化时,用该方法可以判断三角形覆盖哪些像素。如果叉乘结果为0,则自定义是否在三角形内部。

image-20230515155440122
在三维直角坐标系(右手坐标系)中进行向量分解
image-20230515155508640

以u为例,u为单位向量,长度为1,p在u的投影为:

img

矩阵

N*M的矩阵:N行M列的矩阵

数学上是没有矩阵与标量相加减的运算的,但是很多线性代数的库都对它有支持。矩阵与标量之间的加减就是将矩阵中每一个元素都与标量进行加减。矩阵与矩阵之间的加减就是两个矩阵对应元素的加减运算,所以总体的规则和与标量运算是差不多的,只不过在相同索引下的元素才能进行运算。

矩阵数乘:将矩阵中的每一个数都与n相乘

矩阵乘法:NM的矩阵与MP的矩阵相乘得到N*P的矩阵,结果矩阵元素Aij由第一个矩阵第i行乘以第二个矩阵第j列获得。

矩阵乘法的性质:

image-20230515155028337

矩阵与向量相乘,一般默认向量在右侧,矩阵列数与向量行数相同:

image-20230515155049820

矩阵的转置:

image-20230515155114282

单位矩阵和逆矩阵:

image-20230515155143338

原矩阵乘以单位矩阵,相当于不对原矩阵不做任何操作.

向量的点积和叉积可以转换成矩阵乘法(向量默认为列向量):

image-20230515155234507
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信