Skip to content
二维叉积

二维叉积

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

定义

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

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

二维叉积计算:

a×b=|x1x2y1y2|=x1y2x2y1

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

a×b=|a||b|sinθ

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

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

几何意义

  1. 转向判定
  • a×b>0sinθ>0,表示 ba 的逆时针方向(向左转)。
  • a×b<0sinθ<0,表示 ba 的顺时针方向(向右转)。
  • a×b=0sinθ=0,表示 ab 共线(方向相同或相反)。
  1. 有向面积
  • ab 为邻边的平行四边形的面积为 |a×b|
  • ab 为邻边的三角形面积为 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. 线段相交判定
线段 ABCD 规范相交(端点不重合)的充要条件是 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 扫描法)
维护凸包边界时,用叉积检查连续三点 Pi1,Pi,Pi+1 是否保持“向左转”(逆时针):

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

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

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