有人知道一种算法可以用来确定两个矩形重叠的程度和方向吗我花了几个小时试图解决这个问题,这样我就可以把它实现为一个用slick2d+java编写的基本平铺游戏。
最佳答案
轮询角点的坐标,如果Square1
在Square2
最近和最远的顶点之间有任何角点,它们会因坐标差而发生碰撞?
例子:
square1.setVertex1(0,0);
square1.setVertex2(2,0);
square1.setVertex3(2,2);
square1.setVertex4(0,2);
square2.setVertex1(1,1);
square2.setVertex2(4,1);
square2.setVertex3(4,4);
square2.setVertex4(1,4);
Vertex[] verticesSq1=Square1.getVertices();
for (Vertex vert: verticesSq1) {
if(vert.getXVal>square2.getLowestXVal() &&
vert.getXVal<square2.getHighestXVal()
&&
vert.getYval>square2.getLowestYval() &&
vert.getYVal<square2.getHighestYVal() {
System.out.write("Vertex "+vert.ID+" is overlapping Square 2 by " +
vert.getXval()-square2.getLowestXVal +","+
vert.getYval()-square2.getLowestYVal);
}
}