大学没有好好学习线性代数,无奈只能再次复习。
推荐一本书 《3D数学基础:图形与游戏开发》(https://pan.baidu.com/s/1YZ-xEuHwensh5IBa1DsPoA)
文章目录
向量
数学定义
对于数学家而言,向量就是一个数字列表,对于程序员而言则是另一种相似的概念-数组
向量与标量
数学上区分向量和标量,“速度”和“位移”是向量,而“速率”和“长度”是标量。
向量的维度
向量的维度就是向量包含的“数”的数目,有一维、二维、三维、四维向量。下列各图分别表示:
图4的 C w C_w Cw表示缩放因子,在OpenGL图像渲染中
位置与位移
向量没有位置,只有大小和方向。
例如:
- 位移:“向前走三步”,这句话听上去是关于位置的,但其实句子中使用的量表示的是相对位移,而不是绝对位置。这个相对位移由大小(三步)和方向(向前)构成,所以它能用向量表示。
- 速度:“我们以50英里每小时的速度向北行驶”,这句话描述了一个量,它有大小(50英里每小时)和方向(北),但没有具体位置。“50英里每小时的速度向北”能用向量表示。
注意:位移、速度与距离、速率是完全不同的两种定义。位移和速度是向量,包含方向,而距离和速率是标量,不指明任何方向。
所以,记住:上图的向量,只有箭头的长度和方向是有意义的,不包括位置。
向量运算
负向量
向量变负,将得到一个和原向量大小相等,方向相反的向量
运算法则:
-[x,y] = [-x,-y]
-[x,y,z] = [-x,-y,-z]
-[x,y,z,w] = [-x,-y,-z,-w]
…
向量大小
运算法则
加法
向量a和向量b相加的几何解释为,平移向量,使得向量a的头指向向量b的尾,接着从a的尾向b的头画一个向量。这就是向量加法的“三角形法则”。
点乘
a ⋅ b = a x b x + a y b y ( a 和 b 是 2 D 向 量 ) a\cdot b = a_x b_x + a_y b_y (a和b是2D向量)