Java 找到两个矩形的交点
我们有两个矩形示例:Java 找到两个矩形的交点,java,intersection,Java,Intersection,我们有两个矩形示例: public static Rectangle rect1 = new Rectangle(20, 300, 400, 160); public static Rectangle rect2 = new Rectangle(150, 60, 230, 450); 问题是要找到一种算法来查找这两个矩形的所有交点您可以使用内置方法来获取交点 您应该这样做: public Area getRectanglesColisionArea(Rectangle rect1, Rec
public static Rectangle rect1 = new Rectangle(20, 300, 400, 160);
public static Rectangle rect2 = new Rectangle(150, 60, 230, 450);
问题是要找到一种算法来查找这两个矩形的所有交点您可以使用内置方法来获取交点 您应该这样做:
public Area getRectanglesColisionArea(Rectangle rect1, Rectangle rect2){
Area shape1 = new Area(rect1);
Area shape2 = new Area(rect2);
return shape1.intersect(shape2);
}
返回区域形状为
要仅调用函数,请执行以下操作:
Rectangle rect1 = new Rectangle(20, 300, 400, 160);
Rectangle rect2 = new Rectangle(150, 60, 230, 450);
Area result = getRectanglesColisionArea(rect1,rect2);
面积结果是交点的形状,从那里可以得到交点:
Rectangle inters = result.getBounds();
Double x1=inters.getX();
Double y1=inters.getY();
Double x2=inters.getX()+inters.getWidth();
Double y2=inters.getY()+inters.getHeight();
对于两个矩形,相交的情况有四种
这些条件可用于编写测试以找到解决方案。听起来像是碰撞检测问题,这听起来更像是数学而不是Java。如果你理解它的数学,编码应该很简单。(我认为交点是一个区域,而不是一组特定的离散点。)对于两个矩形的交点,可能有无穷多个解,也可能没有解
Rectangle inters = result.getBounds();
Double x1=inters.getX();
Double y1=inters.getY();
Double x2=inters.getX()+inters.getWidth();
Double y2=inters.getY()+inters.getHeight();