本文介绍算法,代码实现在多边形布尔运算(2)。
交点的几何数
两平面向量交点的几何数的绝对值取1,这两个向量在该交点处各有一个几何数,其正负号由向量的旋向决定——记这两个平面向量分别为P1和P2,若从P2旋转到P1为逆时针,则P1在该交点处的几何数为-1,则P2在该交点处的几何数为+1;若从P2旋转到P1为顺时针,则P1在该交点处的几何数为+1,则P2在该交点处的几何数为-1。可以注意到P1在该交点处的几何数的正负号与P1×P2的叉积的正负号相同,P2在该交点处的几何数的正负号与P2×P1的叉积的正负号相同。为了方便计算,将非交点的几何数记为0。
考虑几何数的几何意义。如上图所示,矩形ABCD与矩形EFGH相交,交点分别为M和N。取逆时针方向为参考方向,那么向量BC从M点进入矩形EFGH,向量CD从N点离开矩形EFGH;向量EF从M点离开矩形ABCD,向量HE从N点进入矩形ABCD。计算M点对于BC的几何数为-1,M点对于EF的几何数为+1;N点对于CD的几何数为+1,N点对于HE的几何数为-1。故称交点几何数为负的点相对于该向量为入点,即该向量从此交点进入了别的多边形内部