Rectangle
class
Point
class
public class Rectangle {
private double x;
private double y;
private double width;
private double height;
public Rectangle(double myX, double myY, double myWidth, double myHeight) {
x = myX;
y = myY;
width = myWidth;
height = myHeight;
}
public double getArea() {
return width * height;
}
public Rectangle translate(double dx, double dy) {
return new Rectangle(x + dx, y + dy, width, height);
}
public boolean contains(Point p) {
return p.getX() >= x && p.getX() <= x + width
&& p.getY() >= y && p.getY() <= y + height;
}
public boolean contains(Rectangle query) {
return this.x <= query.x + query.width
&& query.x <= this.x + this.width
&& this.y <= query.y + query.height
&& query.y <= this.y + this.height;
}
public Rectangle add(Point p) {
double retX = x;
double retWidth = width;
if(p.getX() < x) {
retWidth = x + width - p.getX();
retX = p.getX();
} else if(p.getX() > x + width) {
retWidth = p.getX() - x;
}
double retY = y;
double retHeight = height;
if(p.getY() < y) {
retHeight = y + height - p.getY();
retY = p.getY();
} else if(p.getY() > y + height) {
retHeight = p.getY() - y;
}
return new Rectangle(retX, retY, retWidth, retHeight);
}
}