Skip to content
二维叉积

二维叉积 ​

在几何计算中,二维叉积(2D Cross Product) 是最重要的基础工具。本质上,二维叉积是将三维空间向量叉积退化到 xy 平面上的标量形式。

定义 ​

给定二维平面上的两个向量:

a→=(x1,y1),b→=(x2,y2)

二维叉积计算:

a→×b→=|x1x2y1y2|=x1y2−x2y1

三角函数表示法:
由向量点积与模长的定义,叉积也可表示为:

a→×b→=|a→||b→|sin⁡θ

其中 θ 是从向量 a→ 逆时针旋转到向量 b→ 的有向夹角(θ∈(−π,π])。

二维叉积不满足交换律
  • 叉积交换向量后符号取反:a→×b→=−b→×a→

几何意义 ​

  1. 转向判定
  • a→×b→>0:sin⁡θ>0,表示 b→ 在 a→ 的逆时针方向(向左转)。
  • a→×b→<0:sin⁡θ<0,表示 b→ 在 a→ 的顺时针方向(向右转)。
  • a→×b→=0:sin⁡θ=0,表示 a→ 与 b→ 共线(方向相同或相反)。
  1. 有向面积
  • 以 a→ 和 b→ 为邻边的平行四边形的面积为 |a→×b→|。
  • 以 a→ 和 b→ 为邻边的三角形面积为 12|a→×b→|。
  • “有向”特性:如果以逆时针方向排列顶点,计算得到的面积为正;反之为负。

代数性质 ​

  1. 反对称性:
a→×b→=−(b→×a→)
  1. 分配律:
a→×(b→+c→)=a→×b→+a→×c→
  1. 数乘结合律:
(ka→)×b→=a→×(kb→)=k(a→×b→)

应用 ​

1. 点相对于直线的相对位置
判断点 P 在有向直线 AB(从 A 指向 B)的哪一侧: 计算 AB→×AP→:

  • >0:点 P 在向量 AB→ 的左侧。
  • <0:点 P 在向量 AB→ 的右侧。
  • =0:点 P 在直线 AB 上。

2. 线段相交判定
线段 AB 与 CD 规范相交(端点不重合)的充要条件是 C,D 分别在 AB 两侧,且 A,B 分别在 CD 两侧:

(AB→×AC→)⋅(AB→×AD→)<0且(CD→×CA→)⋅(CD→×CB→)<0

3. 任意简单多边形面积&
按顺序给出多边形顶点 P1,P2,…,Pn:

Area=12|∑i=1n(Pi×Pi+1)|(Pn+1=P1)

4. 凸包构建(Andrew 算法 / Graham 扫描法)
维护凸包边界时,用叉积检查连续三点 Pi−1,Pi,Pi+1 是否保持“向左转”(逆时针):

  • 若 (Pi−1Pi→)×(PiPi+1→)≤0,说明出现了右转或共线,需要将栈顶点 Pi 弹出。

5. 点在凸多边形内的 O(log⁡N) 判定 固定起点 P1,利用二分查找快速定位待测点 Q 落在哪个极角扇区 △P1PiPi+1,最后用一次叉积判断 Q 是否在边 PiPi+1 的左侧。

6. 旋转卡壳
计算凸包直径或最小外接矩形时,无需直接算点到直线的距离,通过比较三角形的叉积面积,即可在 O(N) 时间内单调维护对踵点对。