Как я могу равномерно произвольно повернуть Vector2 между 0 и 360 градусами? - PullRequest
2 голосов
/ 01 сентября 2011

У меня есть Vector2:

Vector2 v = new Vector2(1,0);

Как можно произвольно повернуть этот вектор (примерно (0,0)) с равномерным распределением в диапазоне [0,360) градусов?

1 Ответ

2 голосов
/ 01 сентября 2011

Для случайного поворота вектора v против часовой стрелки:

Vector2 v = new Vector2( 1,0 );

Random rnd = new Random();
double rotationAngle = 2.0 * Math.PI * rnd.nextDouble();

Vector2 vRotated = new Vector2( 
   (v.x)*Math.cos(rotationAngle) + (v.y)*Math.sin(rotationAngle),
   (v.y)*Math.cos(rotationAngle) - (v.x)*Math.sin(rotationAngle)
);

Математика преобразования происходит от здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...