I am creating a pong game. However, in my game, the paddles have the ability to rotate about their center.
These paddles are represented by rectangle2D objects. Now, these rectangles are supposed to hit the ball as it comes to them. The ball is represented by a circle2D object, and when the ball hits the paddle (this is done by using the intersects method of the rectangles), the ball reverses direction. This works fine when the paddles are not rotated, but when they are rotated, the intersects method doesn't work. When I use this statement:
paddle2.intersects(xLocation, yLocation, diameter, diameter)
(Where paddle2 is the name of one of the rectangles, and the parameters passed to it represent the x coordinate, y coordinate, and radius of the circle)
The circle acts as if the rectangle isn't rotated. That is, it will bounce off the rectangles original position.
I should probably mention that I am rotating the rectangles using affine transforms. This is the command I use to make the rectangle appear rotated:
g2.rotate(Math.toRadians(angle), xLocation+(width/2), yLocation+(height/2));
(where the parameters are the rotation angle of the rectangle, and the x and y coordinates of the center).
Then, I reset the affine transform of my g2 object back to a regular affine transform.
I have been researching this problem for awhile now, and I have found a couple discussions on the problem. However, they seem to be over my head, and they seem to deal with matrix mathematics (and as someone who has never learned the necessary math, I get quite lost). So, I was hoping that someone could provide a simple solution, or walk me through the required math.
Thanks!