Java: Point de Rotation autour de l'autre par degré spécifié de la valeur

Je suis en train de faire tourner un Point 2D en java autour de l'autre, avec un degré spécifié de la valeur, dans ce cas simplement autour du Point (0, 0) à 90 degrés.

Méthode:

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));
}

Prévu pour (3, 0): X = 0, Y = -3

Retourné pour (3, 0): X = 1.8369701987210297 E-16, Y = 1.8369701987210297 E-16

Prévu pour (0, -10): X = -10, Y = 0

Retourné pour (0, -10): X = 10.0, Y = 10.0

Est quelque chose de mal avec la méthode elle-même? J'ai porté à la fonction de (La rotation d'Un Point en 2D Dans Lua - GPWiki) à Java.

EDIT:

Fait quelques tests de performance. Je n'aurais pas pensé, mais le vecteur solution gagné, donc je vais utiliser celui-ci.

OriginalL'auteur Aich | 2012-04-03