定义MyRectangle2D 类,包含: • 两 个 名 为 x 和 y 的 double 型数据域表明矩形的中心点,这两个数据域都带有 get 和 set 方 法(假设这个矩形的边与 x轴 和 y轴 平 行)。 • 带 get 和 set 方法的数据域 width 和 height。 • 一个无参构造方法,该方法创建一个(x,y)值为(0,0)且 width 和height 为1的默认矩形。 • — 个构造方法,创建带指定的 x、y、width 和 height 的矩形。 • 方法 getArea() 返回矩形的面积。 • 方法 getPerimete() 返回矩形的周长。 • 如果给定的点 (x,y)在矩形内,那么方法 contains(double x, double y)返回 true • 如果给定的矩形在这个矩形内,那么方法 contains(MyRectangle2D r)返回 true • 如果给定的矩形和这个矩形重叠,那么方法 overlaps(MyRectangle2D r)返回 true 输入格式 输入第一行输入第一个矩形的坐标x、y、width和height 输入第二行输入第二个矩形的坐标x、y、width和height 输入第三行输入第三个矩形的坐标x、y、width和height 输入第四行输入给定点的坐标x和y 输出格式 第一行输出第一个矩形是否包含给定点 第二行输出第一个矩形的面积 第三行输出第一个矩形的周长 第四行输出第一个矩形是否包含第二个矩形的判定值 第五行输出第一个矩形是否和第三个矩形重叠的判定值 样例输入 2 2 2.2 4.9 4 5 10.5 3.2 3 5 2.3 5.4 3 3 样例输出 true 10.780000000000001 14.200000000000001 false true用Java实现,并且详细说明
时间: 2024-03-25 20:36:40 浏览: 75
MyRectangle2D类的代码实现如下:
```java
public class MyRectangle2D {
private double x;
private double y;
private double width;
private double height;
public MyRectangle2D() {
this(0, 0, 1, 1);
}
public MyRectangle2D(double x, double y, double width, double height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
public double getX() {
return x;
}
public void setX(double x) {
this.x = x;
}
public double getY() {
return y;
}
public void setY(double y) {
this.y = y;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double getArea() {
return width * height;
}
public double getPerimeter() {
return 2 * (width + height);
}
public boolean contains(double x, double y) {
return (x >= this.x - width / 2) && (x <= this.x + width / 2)
&& (y >= this.y - height / 2) && (y <= this.y + height / 2);
}
public boolean contains(MyRectangle2D r) {
return contains(r.getX() - r.getWidth() / 2, r.getY() + r.getHeight() / 2)
&& contains(r.getX() - r.getWidth() / 2, r.getY() - r.getHeight() / 2)
&& contains(r.getX() + r.getWidth() / 2, r.getY() + r.getHeight() / 2)
&& contains(r.getX() + r.getWidth() / 2, r.getY() - r.getHeight() / 2);
}
public boolean overlaps(MyRectangle2D r) {
return !contains(r) && ((x - r.getX()) * (x - r.getX()) < (width + r.getWidth()) * (width + r.getWidth()) / 4)
&& ((y - r.getY()) * (y - r.getY()) < (height + r.getHeight()) * (height + r.getHeight()) / 4);
}
}
```
其中,x和y表示矩形的中心点坐标,width和height表示矩形的宽和高。构造方法包括无参构造方法和带参数的构造方法。方法包括获取和设置x、y、width和height的方法,获取矩形面积的方法getArea(),获取矩形周长的方法getPerimeter(),判断给定点是否在矩形内的方法contains(double x, double y),判断给定矩形是否在当前矩形内的方法contains(MyRectangle2D r),判断给定矩形是否与当前矩形重叠的方法overlaps(MyRectangle2D r)。
输入格式为每行输入一个矩形的坐标x、y、width和height,以及给定点的坐标x和y。输出格式为第一行输出第一个矩形是否包含给定点的判定值,第二行输出第一个矩形的面积,第三行输出第一个矩形的周长,第四行输出第一个矩形是否包含第二个矩形的判定值,第五行输出第一个矩形是否和第三个矩形重叠的判定值。
阅读全文