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.