Java: gire o ponto em torno de outro pelo valor do grau especificado

Estou tentando girar um ponto 2D em java em torno de outro com um valor de grau especificado, neste caso, simplesmente em torno do ponto (0, 0) a 90 grau

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 por (3, 0): X = 0, Y = -3

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

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

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

Há algo de errado com o próprio método? Eu portado a função de (Girando um ponto em 2D em Lua - GPWiki) para Java.

EDITAR

Fiz alguns testes de desempenho. Eu não pensaria assim, mas a solução vetorial venceu, então usarei est

questionAnswers(4)

yourAnswerToTheQuestion