Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

I need some maths help for a 2D game I am programming. In this game I have a rectangle, specified by its centers' X and Y coordinates, and its width and height. I then rotate this rectangle via

halfWidth = width / 2;
halfHeight = height / 2;

rad = angle * TO_RADIANS;
cos = FloatMath.cos(rad);
sin = FloatMath.sin(rad);

x1 = -halfWidth * cos - (-halfHeight) * sin;
y1 = -halfWidth * sin + (-halfHeight) * cos;
x2 =  halfWidth * cos - (-halfHeight) * sin;
y2 =  halfWidth * sin + (-halfHeight) * cos;
x3 =  halfWidth * cos - halfHeight * sin;
y3 =  halfWidth * sin + halfHeight * cos;
x4 = -halfWidth * cos - halfHeight * sin;
y4 = -halfWidth * sin + halfHeight * cos;

x1 += x;
y1 += y;
x2 += x;
y2 += y;
x3 += x;
y3 += y;
x4 += x;
y4 += y;

That is working fine.

Additionally I have a point in the same Cartesian coordinate space, specified by pointX and pointY. Now I want check whether or not this point lies within the boudaries of the rotated rectangle -- but unfortunately I do not have a clue how to achieve this :)

Can you help me with this question?
Thanks in advance!

Kind regards, Matthias

share|improve this question
    
Just for the record, I have found two interesting links on that topic: ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html http://www.visibone.com/inpoly/ Cheers! –  Matthias Jul 30 '11 at 13:56

1 Answer 1

up vote 6 down vote accepted

Rotate the point back and test it against the unrotated rectangle.

share|improve this answer
2  
If you can't bring the rectangle to the point, bring the point to the rectangle. :) –  J. M. Jul 28 '11 at 16:20
    
He needs to rotate the test point around the center of the rectangle by -angle, but this is a good plan. –  Ross Millikan Jul 28 '11 at 16:24
    
Thanks, that sounds like a plan! But is this also the fastest (in terms of computation time) solution? It seems the rotating all four X/Y pairs of the rect plus the X/Y coords. of the point is a bit much work for the computer (within a loop of a game) -- or isn't there any faster (mathematical) solution? –  Matthias Jul 28 '11 at 20:03
    
@Matthias, there is another solution based on half-spaces: the point must be to the left of all edges, when the rotated rectangle is oriented counter-clockwise. Each test reduces to computing a 2x2 determinant. –  lhf Jul 28 '11 at 20:47
    
@lhf, sorry but I do not really understand your second approach. Could you please be so kind and explain that a bit? Thanks a lot in advance for all your help! –  Matthias Jul 28 '11 at 21:00

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.