上图是相交的,则向量 A1A2 和 向量A1B2在向量A1B1两侧 可以推导出:
(A1A2*A1B1)x(A1B2*A1B1)<0
基本概念:
1,A1A2=(x2-x1,y2-y1)
2,(A1A2*A1B1)
坐标运算向量积,可以用三阶行列式表示
(A1A2*A1B1)=
其中i,j,k表示x,y,z轴上的单位向量。
对我们来说判断平面即可,可推导公式:
因此判断方法:
private boolean isOverLapping(Point a1, Point b1, Point a2, Point b2) { int forkMultiplying1 = (a2.x - a1.x) * (b1.y - a1.y) - (a2.y - a1.y) * (b1.x - a1.x); int forkMultiplying2 = (b2.x - a1.x) * (b1.y - a1.y) - (b2.y - a1.y) * (b1.x - a1.x); System.out.println("forkMultiplying1:forkMultiplying2 | " + forkMultiplying1 + ":" + forkMultiplying2); return forkMultiplying1 * forkMultiplying2 < 0; }