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