基本的代数 / 图形学,向量运算的几何意义
向量点乘
\[ \begin {align*} & \vec A = (x_1,\ y_1,\ z_1) \\ & \vec B = (x_2,\ y_2,\ z_2) \\ & \vec A \cdot \vec B = (x_1 * x_2,\ y_1 * y_2,\ z_1 * z_2) \\ & \vec A \cdot \vec B = \lvert \vec A \rvert * \lvert \vec B \rvert * \cos (\theta) & (\theta 为两向量夹角)\\ \end {align*} \]
向量点乘的结果是一个标量 , 根据最后一个公式的定义, 我们可以通过点乘计算夹角角度, 或者计算一个向量在另一个向量上的投影长度
通过向量点乘可以计算向量 A 在向量 B 方向上的投影长度
\[ \begin{align*} & l = \frac{ \vec A \cdot \vec B } { \lvert \vec B \rvert } = \frac{ \lvert \vec A \rvert * \lvert \vec B \rvert * \cos(\theta) } { \lvert \vec B \rvert } = \lvert \vec A \rvert * \cos(\theta) \end{align*} \]
特别的,当向量 B 的模长为 1 时,可以有以下等式
\[ l = \vec A \cdot \vec B \]
向量点乘的几何意义
粗略判断夹角大小 当两个向量 A 和 B 的模长都大于 0 时, 其点乘结果与 0 相比可以粗略得出向量夹角的大小 (0° 到 180°) - 点乘值 > 0, 也就是 \(\cos(\theta) > 0\), 夹角为锐角 - 点乘值 = 0, 也就是 \(\cos(\theta) = 0\), 夹角为直角 - 点乘值 < 0, 也就是 \(\cos(\theta) < 0\), 夹角为钝角
计算夹角的准确大小 由点乘的计算公式可以计算夹角大小
\[ \theta = \arccos \frac{\vec A \cdot \vec B}{\lvert \vec A \rvert * \lvert \vec B \rvert} \]
向量叉乘
两个向量叉乘的结果是一个向量
\[ \begin{align*} & \vec A \times \vec B = \vec C \\ & \lvert \vec C \rvert = \lvert \vec A \rvert * \lvert \vec B \rvert * \sin(\theta) \end{align*} \]
结果 C 向量同时垂直于向量 A 和向量 B, 可以用右手法则确定 C 的具体方向,右手四指从 A 转向 B, 大拇指指向的就是 C 的方向;C 的模长如公式所示
注意:由于计算结果是向量,有方向区分,所以向量叉乘不满足交换律
\[ \vec A \times \vec B = - \vec B \times \vec A \]
交换向量 A 和 B 后,其结果向量模长相等,方向相反
向量叉乘的结果可以使用行列式计算,不要去记最终结果,太难记了
\[ \begin{align*} & \vec A && = (x_1, \ y_1, \ z_1) \\ & \vec B && = (x_2, \ y_2, \ z_2) \\ & \vec A \times \vec B && = \left| \begin{array}{} \vec x & \vec y & \vec z \\ x_1 & y_1 & z_1 \\ x_2 & y_2 & z_2 \\ \end{array} \right| \\ & && = \vec x \left| \begin{array}{} y_1 & z_1 \\ y_2 & z_2 \end{array} \right| - \vec y \left| \begin{array}{} x_1 & z_1 \\ x_2 & z_2 \end{array} \right| + \vec z \left| \begin{array}{} x_1 & y_1 \\ x_2 & y_2 \end{array} \right| \\ & && = \vec x (y_1z_2 - y_2z_1) + \vec y (x_2z_1 - x_1z_2) + \vec z (x_1y_2 - x_2y_1) \end{align*} \]
其中,\(\vec x\) 表示 x 轴方向的单位向量,\(\vec y\) 和 \(\vec z\) 同理
行列式计算可以参考 行列式的代数余子式计算法