关于java中判断一个点是否在一个长方形内和一个长方形是否包含另一个长方形或者两个相重叠的问题。

 

 

案例代码 

import java.util.Scanner;
public class rhh {
   
public static void main(String[] args){
       
MyRectangle2D rl=new MyRectangle2D(2,2,5.5,4.9);
       
System.out.println(rl.getArea()+" "+rl.getPerimeter());
       
System.out.println(rl.contains(3,3)+" "+rl.contains(new MyRectangle2D(4,5,10,3.2)));
       
System.out.println(rl.overlaps(new MyRectangle2D(3,5,2.3,5.4)));
    }
}

public class MyRectangle2D {
  
double x,y,width,height;
   
MyRectangle2D()
    {
       
x=0;
       
y=0;
       
width=1;
       
height=1;
    }
   
public MyRectangle2D(double x,double y,double width,double height)
    {
       
this.x=x;
       
this.y=y;
       
this.width=width;
       
this.height=height;
    }
   
public void setHeight(double height)
    {
       
this.height=height;
    }
   
public  void  setWidth(double width)
    {
       
this.width=width;
    }

   
double getArea()
    {
       
return width*height;
    }
   
double getPerimeter()
    {
       
return (width+height)*2;
    }
   
boolean contains(double x,double y)
    {
       
return (Math.abs(this.x-x))<width && (Math.abs(this.y-y))<height;
    }
   
boolean contains(MyRectangle2D r)
    {
       
if(r.x+r.width/2<=this.x+this.width/2)
           
if(r.x-r.width/2>=this.x-this.width/2)
               
if(r.y+r.height/2<=this.y+this.height/2)
                   
if(r.y-r.height/2>=this.y-this.height/2)
                       
return true;
       
return false;
    }
   
boolean overlaps(MyRectangle2D r)
    {
        
if(r.x+r.width/2>this.x+this.width/2||r.x-r.width/2<this.x-this.width/2||r.y+r.height/2>this.y+this.height/2||r.y-r.height/2<this.y-this.height/2)
           
return true;
       
return false;
    }
   
public   double getX()
    {
       
return x;
    }
   
public double getY()
    {
       
return  y;
    }
   
public double getWidth()
    {
       
return width;
    }
   
public double getHeight()
    {
       
return  height;
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值