如何检查两个方格是否相交?

时间:2018-06-17 17:22:38

标签: math geometry

square1 =(47,15)(51,15)(51,19)(47,19)

square2 =(19,0)( - 27,46)(19,92)(65,46)

这两个方块可能与X轴或Y轴不平行。

这两个方块不相交,但如何从这些点以数学方式找到它?

2 个答案:

答案 0 :(得分:0)

对于边与Y轴和Y轴平行的情况,您可以使用以下(简单形式,无性能优化):

(min(square2.x1, square2.x2) <= max(square1.x1, square1.x2)) and
(min(square1.x1, square1.x2) <= max(square2.x1, square2.x2)) and
(min(square2.y1, square2.y2) <= max(square1.y1, square1.y2)) and
(min(square1.y1, square1.y2) <= max(square2.y1, square2.y2))

答案 1 :(得分:0)

对于任意旋转的方块,您可以使用Separating Axes Theorem(SAT)方法。 One more explanation

检查第一凸多边形是否位于第二凸多边形的外侧,反之亦然。这种方法非常有效。