
假设墙上顶一组钉子,这些钉子的集合为X,我们用橡皮筋围住这些钉子,橡皮筋的形状就是凸包(来源于网络)。

对于两个向量 p q ⃗ \vec{pq} pq和 q r ⃗ \vec{qr} qr
- 如果 p q ⃗ \vec{pq} pq和 q r ⃗ \vec{qr} qr的叉积结果大于0,说明两者之间小于180度(以 p q ⃗ \vec{pq} pq方向为极轴,逆时针追踪 q r ⃗ \vec{qr} qr),说明r在 p q ⃗ \vec{pq} pq的左边
- 如果 p q ⃗ \vec{pq} pq和 q r ⃗ \vec{qr} qr的叉积结果小于0,说明两者之间大于180度(以 p q ⃗ \vec{pq} pq方向为极轴,逆时针追踪 q r ⃗ \vec{qr} qr),说明r在 p q ⃗ \vec{pq} pq的右边
- 如果 p q ⃗ \vec{pq} pq和 q r ⃗ \vec{qr} qr的叉积结果等于0,说明p,q,r三点在同一条线上
算法流程:
对于叉乘结果=0的特殊情况,那我们根据远近依次排序