Detección de colisión con rectángulos rotados

Estoy creando un juego de mesa. Sin embargo, en mi juego, las paletas tienen la capacidad de girar sobre su centro.

Estas paletas están representadas por objetos rectangle2D. Ahora, se supone que estos rectángulos golpean la pelota cuando se trata de ellos. La pelota está representada por un objeto circle2D, y cuando la pelota golpea la paleta (esto se hace usando el método de intersección de los rectángulos), la pelota invierte la dirección. Esto funciona bien cuando las paletas no se giran, pero cuando se giran, el método de intersección no funciona. Cuando uso esta declaración:

paddle2.intersects(xLocation, yLocation, diameter, diameter)

(Donde paddle2 es el nombre de uno de los rectángulos, y los parámetros que se le pasan representan la coordenada x, la coordenada y y el radio del círculo)

El círculo actúa como si el rectángulo no estuviera girado. Es decir, rebotará en la posición original de los rectángulos.

Probablemente debería mencionar que estoy girando los rectángulos usando transformaciones afines. Este es el comando que uso para hacer que el rectángulo parezca rotar:

g2.rotate(Math.toRadians(angle), xLocation+(width/2), yLocation+(height/2)); 

(donde los parámetros son el ángulo de rotación del rectángulo y las coordenadas x e y del centro).

uego, restablezco la transformación afín de mi objeto g2 a una transformación afín normal.

He estado investigando este problema por un tiempo ahora, y he encontrado un par de discusiones sobre el problema. Sin embargo, parecen estar sobre mi cabeza, y parecen tratar con las matemáticas de matriz (y como alguien que nunca aprendió las matemáticas necesarias, me pierdo bastante). Entonces, esperaba que alguien pudiera proporcionar una solución simple, o guiarme a través de las matemáticas requeridas.

¡Gracias