# Point inside of rectangle

## Recommended Posts

h3ro    161
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
jyk    2094
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
h3ro    161
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
Hodgman    51324
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
alvaro    21263
* 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
h3ro    161
Thank you to all of you. I have it working now :)

##### Share on other sites
alvaro    21263
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
h3ro    161
I used yours. It was the simplest and the I understood it :P

Thanks

##### Share on other sites
jyk    2094
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
Boder    938

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.

##### Share on other sites
h3ro    161
For some reason I cant get I to work anymore. Right now it is only drawing half the bounding box. Any ideas on why?

EDIT:
Fooling around for ever fixed it. Not really sure what it was though, but working now :)

[Edited by - h3ro on February 23, 2008 4:47:38 PM]