Java: Gire el punto alrededor de otro por un valor de grado especificado

ntento rotar un punto 2D en Java alrededor de otro con un valor de grado especificado, en este caso simplemente alrededor del punto (0, 0) a 90 grados.

Método

public void rotateAround(Point center, double angle) {
    x = center.x + (Math.cos(Math.toRadians(angle)) * (x - center.x) - Math.sin(Math.toRadians(angle)) * (y - center.y));
    y = center.y + (Math.sin(Math.toRadians(angle)) * (x - center.x) + Math.cos(Math.toRadians(angle)) * (y - center.y));
}

Esperado para (3, 0): X = 0, Y = -3

Devuelto para (3, 0): X = 1.8369701987210297E-16, Y = 1.8369701987210297E-16

Esperado para (0, -10): X = -10, Y = 0

Devuelto por (0, -10): X = 10.0, Y = 10.0

¿Hay algún problema con el método en sí? Porté la función desde (Rotación de un punto en 2D en Lua - GPWiki) a Java.

EDITAR

Hizo algunas pruebas de rendimiento. No lo hubiera pensado, pero la solución vectorial ganó, así que usaré esta.

Respuestas a la pregunta(4)

Su respuesta a la pregunta