利用叉积计算向量的旋向及折线段的拐向

一、向量叉积

两个向量 u u u v v v的叉积写作 u × v = n ∥ u ∥ ∥ v ∥ s i n θ \mathbf{u \times v = n \left \| u \right \| \left \| v \right \| sin\theta } u×v=nuvsinθ
式中, n n n: 与 u u u v v v均垂直的单位向量,theta是两向量的夹角。
利用叉积计算向量的旋向及折线段的拐向_第1张图片
叉积的w长度可以解释成以 u u u v v v为边的四边形的面积。同样,三重积是以 u u u v v v w w w为边的平行六面体的体积。

二、向量的旋向

设平面内两向量 P 1 = ( x 1 , y 1 ) P_{1} =(x_1, y_1) P1=(x1,y1) P 2 = ( x 2 , y 2 ) P_{2} =(x_2, y_2) P2=(x2,y2)。由叉积定义,两向量叉积的模是原点o、 P 1 P_1 P1 P 2 P_2 P2组成的平行四边形的带符号的面积:
利用叉积计算向量的旋向及折线段的拐向_第2张图片
即: C = ∥ P 1 × P 2 ∥ = ∣ x 1 y 1 x 2 y 2 ∣ = x 1 y 2 − x 2 y 1 C=\left \| P_1\times P_2 \right \| = \begin{vmatrix} x_1 & y_1\\ x_2 & y_2 \end{vmatrix} = x_1y_2-x_2y_1 C=P1×P2= x1x2y1y2 =x1y2x2y1
叉积一个非常重要的性质是可以通过其模 C C C的符号判断两向量相互之间的顺时针、逆时针关系:

  1. C>0, 则 P 2 P_2 P2 P 1 P_1 P1的逆时针方向;
  2. C<0, 则 P 2 P_2 P2 P 1 P_1 P1的顺时针方向;
  3. C>0, 则 P 2 P_2 P2 P 1 P_1 P1共线,可能同向也可能反向;

三、折线段的拐向

折线段的拐向判断方法可以直接由向量叉积的性质推出。设 P 1 ( x 1 , y 1 ) P_1(x_1, y_1) P1(x1,y1) P 2 ( x 2 , y 2 ) P_2(x_2, y_2) P2(x2,y2) P 3 ( x 3 , y 3 ) P_3(x_3, y_3) P3(x3,y3),对于有公共端点 P 2 P_2 P2的线段 P 1 P 2 P_1P_2 P1P2 P 2 P 3 P_2P_3 P2P3,通过计算 C = ∥ ( P 2 − P 1 ) × ( P 3 − P 2 ) ∥ C=\left \| (P_2-P_1)\times \right (P_3-P_2)\| C=(P2P1)×(P3P2)的符号便可确定折线的拐向。

  1. 若C>0, P 1 P 2 P_1P_2 P1P2 P 2 P_2 P2点逆时针旋转后得到 P 2 P 3 P_2P_3 P2P3,此时 P 2 P_2 P2是凸点
  2. 若C<0, P 1 P 2 P_1P_2 P1P2 P 2 P_2 P2点顺时针旋转后得到 P 2 P 3 P_2P_3 P2P3,此时 P 2 P_2 P2是凹点
  3. 若C=0, P 1 、 P 2 、 P 3 P_1、P_2、P_3 P1P2P3三点共线
    利用叉积计算向量的旋向及折线段的拐向_第3张图片

你可能感兴趣的:(算法)