检查MyRectangle2D.java类中的矩形是否重叠
我的任务是检查两个点是否在一个矩形内,一个矩形是否在另一个矩形内,以及一个矩形是否与另一个矩形重叠 我完成了前两个步骤,但无法解决重叠方法 这就是我所做的检查MyRectangle2D.java类中的矩形是否重叠,java,Java,我的任务是检查两个点是否在一个矩形内,一个矩形是否在另一个矩形内,以及一个矩形是否与另一个矩形重叠 我完成了前两个步骤,但无法解决重叠方法 这就是我所做的 public class MyRectangle2D { public static void main(String[] args) { Scanner input = new Scanner(System.in); MyRectangle2D rect = new MyRectangle2D();
public class MyRectangle2D {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
MyRectangle2D rect = new MyRectangle2D();
//returns area of default rectangle
System.out.println(rect.getArea());
//returns perimeter of default rectangle
System.out.println(rect.getPerimeter());
//returns true if default (0,0) is inside rectangle
System.out.println(rect.contains(0,0));
//returns false if point is not in triangle
System.out.println(rect.contains(10,10));
MyRectangle2D r1 = new MyRectangle2D(10,2,6,4);
System.out.println("The area of your rectangle is " + r1.getArea() +
" \nthe perimeter of your rectangle is " + r1.getPerimeter());
System.out.println("Testing Rectangle 2 with points (1,8)...");
//following lines test the contain(x,y) method
System.out.println(r1.contains(1,8) ? "Point (1,8) is on Rectangle" : "Point(1,8) is not on Rectangle");
System.out.println("Testing Rectangle 2 with points (10,1)...");
System.out.println(r1.contains(10,1) ? "Point (10,1) is on Rectangle" : "Point(10,1) is not on Rectangle");
//following lines test contains(rect) method
System.out.println(r1.contains(new MyRectangle2D(9,1,1,1)) ? "Rectangle is inside" : "Not inside");
System.out.println(r1.contains(new MyRectangle2D(9,1,10,2)) ? "Rectangle is inside" : "Rectangle is not inside");
//following lines test if rectangles overlap
System.out.println(r1.overlaps(new MyRectangle2D(4,2,8,4)));
}
double x;
double y;
double width;
double height;
private MyRectangle2D(){
x = 0;
y = 0;
width = 1;
height = 1;
}
private MyRectangle2D(double newX, double newY,
double newWidth, double newHeight){
setX(newX);
setY(newY);
setHeight(newHeight);
setWidth(newWidth);
}
double getX(){
return x;
}
double getY(){
return y;
}
void setX(double newA){
x = newA;
}
void setY(double newA){
y = newA;
}
double getWidth(){
return width;
}
double getHeight(){
return height;
}
void setWidth(double newA){
width = newA;
}
void setHeight(double newA){
height = newA;
}
double getArea(){
double area = width * height;
return area;
}
double getPerimeter(){
double perimeter = (2 * width) + (2 * height);
return perimeter;
}
boolean contains(double x, double y){
boolean inside = false;
if(x<(getWidth()/2 + getX()) && x>getX()-(getWidth()/2)){
if(y<(getY() + getHeight()/2) && y>getY()-(getHeight()/2))
inside = true;
}
return inside;
}
boolean contains(MyRectangle2D r){
boolean inside = false;
if(r.getX()<(getWidth()/2 + getX()) && r.getX()>getX()-(getWidth()/2)){
if(r.getY()<(getY() + getHeight()/2) && r.getY()>getY()-(getHeight()/2)){
if(r.getWidth()<=getWidth() && r.getHeight()<=getHeight())
inside = true;
}
}
return inside;
}
boolean overlaps(MyRectangle2D r){
boolean inside = false;
if(contains(r.getX()+r.getWidth(),r.getY()+r.getHeight()))
inside = true;
if(contains(r.getX()-r.getWidth(),r.getY()-r.getHeight()))
inside = true;
return inside;
}
}
公共类MyRectangle2D{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
MyRectangle2D rect=新的MyRectangle2D();
//返回默认矩形的区域
System.out.println(rect.getArea());
//返回默认矩形的周长
System.out.println(rect.getPermission());
//如果默认值(0,0)在矩形内,则返回true
System.out.println(rect.contains(0,0));
//如果点不在三角形中,则返回false
System.out.println(rect.contains(10,10));
MyRectangle2D r1=新的MyRectangle2D(10,2,6,4);
System.out.println(“矩形的面积是”+r1.getArea()+
“\n矩形的周长为”+r1.GetPermiture());
System.out.println(“带点(1,8)的测试矩形2”);
//下面几行测试contain(x,y)方法
System.out.println(r1.包含(1,8)-“点(1,8)在矩形上”:“点(1,8)不在矩形上”);
System.out.println(“带点(10,1)的测试矩形2”);
System.out.println(r1.包含(10,1)-“点(10,1)在矩形上”:“点(10,1)不在矩形上”);
//以下行测试包含(rect)方法
System.out.println(r1.contains(新的MyRectangle2D(9,1,1,1))?“矩形在里面”:“不在里面”);
System.out.println(r1.contains(新的MyRectangle2D(9,1,10,2))?“矩形在里面”:“矩形不在里面”);
//下面的行测试矩形是否重叠
System.out.println(r1.overlaps(新的MyRectangle2D(4,2,8,4));
}
双x;
双y;
双倍宽度;
双高;
私有MyRectangle2D(){
x=0;
y=0;
宽度=1;
高度=1;
}
私有MyRectangle2D(双新X、双新Y、,
双新宽度,双新高度){
setX(newX);
赛蒂(纽伊);
设置高度(新高度);
设置宽度(新宽度);
}
双getX(){
返回x;
}
双倍{
返回y;
}
void setX(双newA){
x=新A;
}
void setY(双纽瓦){
y=newA;
}
双getWidth(){
返回宽度;
}
双getHeight(){
返回高度;
}
void setWidth(双newA){
宽度=newA;
}
空隙设置高度(双倍新高度){
高度=新高度;
}
双getArea(){
双面积=宽度*高度;
返回区;
}
double getperiment(){
双周长=(2*宽度)+(2*高度);
返回周长;
}
布尔包含(双x,双y){
布尔内部=假;
if(xgetX()-(getWidth()/2)){
if(ygetY()-(getHeight()/2))
内=真;
}
返回内部;
}
布尔包含(MyRectangler){
布尔内部=假;
if(r.getX()getX()-(getWidth()/2)){
if(r.getY()getY()-(getHeight()/2)){
如果(r.getWidth()这将发现该矩形是否与另一个矩形重叠,请不要忘记将其标记为答案,并在可能的情况下向上投票
public boolean overlaps (MyRectangle2D r) {
return x < r.x + r.width && x + width > r.x && y < r.y + r.height && y + height > r.y;
}
公共布尔重叠(MyRectangler){
返回xr.x&&yr.y;
}
吮吸不合适you@MadProgrammer感谢您的输入,别忘了对我的答案和其他所有答案进行投票。请参见以下内容: