矢量概念
如果把一条线段的端点作出次序之分,则可将这种线段看作有向线段。如果有向线段 的起点 在坐标原点,则把它称为矢量 。这样,点 可以看作起点为原点 的二维矢量。相应地,三维空间坐标系下的坐标也可以作类似理解为三维矢量。
设二维矢量 ,则矢量的加法定义为 ,矢量的减法定义为 。矢量的加减法有以下性质: 。因为点可视为坐标原点至该点的矢量,所以点的加减法就是矢量的加减法。
矢量的叉积
矢量的叉积,也称矢量的叉乘。矢量 与 的叉乘记作 。定义 ,其结果是一个标量。几何意义为由原点、点 、点 、点 四点共同组成的平行四边形的面积(带正负号)。计算矢量叉积是直线和线段相关算法的核心。矢量的叉积有以下性质: 。
叉乘的一个非常重要的性质是,可以通过它的正负号判断两矢量之间的顺逆时针关系:
- 若 ,则 在 的顺时针方向(左旋);
- 若 ,则 在 的逆时针方向(右旋);
- 若 ,则 和 共线,可能同向也可能反向。
算法举例
判断折线段的拐向
折线段的拐向判断方法可以直接由矢量叉积的性质推出。
对于有公共端点的线段 和 ,通过计算 的符号,就可以确定折线的拐向:
- 若 ,则 在 点拐向右侧得到 ;
- 若 ,则 在 点拐向左侧得到 ;
- 若 ,则 、 、 三点共线。
判断点是否在线段上