Я пытаюсь повернуть 2D-точку в java вокруг другой с заданным значением градуса, в данном случае просто вокруг точки (0, 0) на 90 градусов.
Метод:
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));
}
Ожидается для (3, 0): X = 0, Y = -3
Возвращено для (3, 0): X = 1,8369701987210297E-16, Y = 1,8369701987210297E-16
Ожидается для (0, -10): X = -10, Y = 0
Возвращено для (0, -10): X = 10,0, Y = 10,0
Что-то не так с самим методом? Я перенес функцию с (Поворот точки в 2D в Lua - GPWiki) на Java.
EDIT:
Сделал несколько тестов производительности. Я бы так не подумал, но векторное решение победило, поэтому я воспользуюсь этим.