如何检查矩形是否相交?

用户名

嗨,我正在尝试构造此构造函数:public Rectangle createIntersection(Rectangle r){ ....返回一个新的Rectangle对象,该对象表示此Rectangle与指定Rectangle的交集。

到目前为止,我已经为构造函数完成了此操作,但是我不确定它是否正确:

public Rectangle createIntersection(Rectangle r) { 
   Rectangle r1 = new Rectangle () ; 
   Rectangle r2 = new Rectangle ();
   r2.setRect(r);
   r2.createIntersection(r1); 
   return r2;
}

然后,我应该创建一个构造函数public Boolean intersects (Rectangle r),如果与指定的Rectangle相交,则返回true,否则返回false。如果内部重叠,则它们相交。因此,为此我知道我需要使用四个实例变量(int x int y int height和int width)。我知道它必须弄清楚它是否相交,x + width并且如果该值小于其对面的点,则矩形是重叠的。我不知道该怎么写。

0

此方法返回两个矩形的重叠区域;如果两个矩形不重叠,则返回null:

 public static Rectangle createIntersection(Rectangle r1, Rectangle r2) {

     // Left x
     int leftX = Math.max(r1.x, r2.x);

     // Right x
     int rightX = (int) Math.min(r1.getMaxX(), r2.getMaxX());

     // TopY
     int topY = Math.max(r1.y,r2.y);

     // Bottom y
     int botY =  (int) Math.min(r1.getMaxY(), r2.getMaxY());

     if ((rightX > leftX) && (botY > topY)) {
         return new Rectangle(leftX, topY, (rightX - leftX), (botY -topY));
     }

     return null;
 }

一些测试:

 public static void main(String [] args) {

        Rectangle r1 = new Rectangle(10,10,10,10);
        Rectangle r2 = new Rectangle(10,10,10,10);
        System.out.println(createIntersection(r1, r2));

        r1 = new Rectangle(10,10,10,10);
        r2 = new Rectangle(15,15,10,10);
        System.out.println(createIntersection(r1, r2));

        r1 = new Rectangle(20,20,10,10);
        r2 = new Rectangle(15,15,10,10);
        System.out.println(createIntersection(r1, r2));

        r1 = new Rectangle(15,30,10,10);
        r2 = new Rectangle(15,15,10,10);
        System.out.println(createIntersection(r1, r2));

        r1 = new Rectangle(15,30,10,10);
        r2 = new Rectangle(15,15,10,20);
        System.out.println(createIntersection(r1, r2));
 }

不要犹豫,询问代码是否不清楚。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章