Point inside of rectangle

This topic is 3746 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

Recommended Posts

Hallo, How can I check if a point is inside a rectangle? The rectangle has been rotated, so I cant simply compare the point to the vertexes (I think). Thanks in advance

Share on other sites
Quote:
 Original post by h3roHallo,How can I check if a point is inside a rectangle? The rectangle has been rotated, so I cant simply compare the point to the vertexes (I think).Thanks in advance
Short answer: transform the point into the local space of the rectangle, and then perform a point-in-axis-aligned-rectangle test (which is straightforward).

Share on other sites
Sorry for being dump here, but could you please explain a bit more? Math is not really my strongest side. Tried google, but couldnt find anything for "point-in-axis-aligned-rectangle test"

Share on other sites
Another method:
If you know where the corners of the rectangle are, you can deduce the equation for the four line-segments that make up the edges, which you can then use to determine the normals of each of the edges.

Get the dot-product of the edge-normal and the vector formed from any point on the line to your test-point, this will tell you which side of the line the point is on.
If the point is on the 'inside' of all of the lines, it's inside the box.

Quote:
 Original post by h3roSorry for being dump here, but could you please explain a bit more? Math is not really my strongest side. Tried google, but couldnt find anything for "point-in-axis-aligned-rectangle test"

A "point-in-axis-aligned-rectangle test" is just:
bool Inisde( x, y, l, r, b, t )//x,y are the point, l,r,b,t are the extents of the rectangle{   return x > l && x < r && y > b && y < t;}

Share on other sites
* P is the point.
* C is a corner of the rectangle.
* v1 and v2 are the two vectors that define the sides (with C as origin).
* v = P-C

P is in the rectangle if and only if
0<=dot_product(v,v1)<=dot_product(v1,v1) and 0<=dot_product(v,v2)<=dot_product(v2,v2)

Share on other sites
Thank you to all of you. I have it working now :)

Share on other sites
Quote:
 Original post by h3roThank you to all of you. I have it working now :)

What suggestion did you end up using?

Share on other sites
I used yours. It was the simplest and the I understood it :P

Thanks

Share on other sites
Quote:
 Original post by h3roI used yours. It was the simplest and the I understood it :P
Just for the record, the solution proposed by alvaro is the same as the one I proposed in the first reply to your thread (alvaro, however, was kind enough to spell out the details for you :).

Share on other sites

V is converting to the local space, and uses the dot products for the point-in-rectangle test?

But the dot products are not really necessary if it's AABB, you could use the Hodgman method.

• 10
• 17
• 9
• 14
• 41