Что происходит с Math.sin и Math.cos в Java? И как это исправить?
Я пытаюсь реализовать матрицу вращения. Но есть очень странный эффект:
Это мой код:
public void rotation(PointF point, double a) {
point.x = (point.x - 400) * Math.cos(a) - (point.y - 300) * Math.sin(a)
+ 400;
point.y = (point.x - 400) * Math.sin(a) + (point.y - 300) * Math.cos(a)
+ 300;
}
В результате имеем точку падения в координатах 400,300.
Что случилось? Я хочу, чтобы точка двигалась по кругу? Как я могу сделать лучше?
1 ответ
Решение
Ну не должно быть так
double x = point.x * Math.cos(a) - point.y * Math.sin(a);
double y = point.x * Math.sin(a) + point.y * Math.cos(a);
point.x = x;
point.y = y;
предотвратить модификацию point.x слишком рано?