ok, so i'm doing an assignment for a Java class and one part of the assignment is to find out if a point is within the dimensions of a rectangle. so I created this code:
public boolean contains(Point p){
return (this.getLocation().getX() < p.getX() && this.getLocation().getY() < p.getY() &&
this.getLocation().getX() + this.getWidth() > p.getX() &&
this.getLocation().getY() + this.getHeight() > p.getY());
}
I created a point class as well, which is why I asked for a "Point p" parameter. To test this boolean I created a simple 'if' statement in my Main class:
//check if one rectangle's point is inside another
if (rectangle.contains(rectangle2.getLocation()))
System.out.println("the point is in the rectangle");
The location of the point is (6,7). The point, width, and height of rectangle 1 is (4,5), 9, and 3, respectively. I know for a fact that this point is inside the first rectangle, but the println statement is not showing, meaning there must be a problem with the boolean i created but I don't see an error, maybe my head is cloudy but can someone point out to me what's wrong here?
P.S. this is all Console work, i'm not dealing with some GUI or graphics programming.
It looks ok to me. I would check that your test case actually has the numbers you think it does; I would also check that your accessors are all returning the right values (I can't tell you the number of times I've implemented getX() as {return this.y;}). Other than that it's anyone's guess.
Though its a naive method, I tried the following concept:
If the Point (px,py) is inside the given rectangle, the sum of areas of triangles formed by joining 2 rectangle points and the given point (say in anti-clockwise or clockwise direction) would be equal to the sum of rectangle.
I have a picture for the same, but due to low reputation (as I am a newbie), cannot post it.
When I was formulating this into actual Java code, I had to handle a situation where the area value with decimal part having 15 9s was rounded to its nearest integer.
Refer this code:
public class pointInsideRect {
Usually when dealing with computer graphics, the top left point is (0,0) and the bottom right corner is (width, height).
This means that you should reverse your conditions
AWT Rectangle already has
contains
method. ( link )Task seems about if you understand how naming spaces conflict. For example, if you are lazy (it's one of most admired qualities of a programmer), then you can write:
You generally do not want to reimplementing features nor extend classes.