Как найти координаты Vector2 рядом с позицией игрока, но в радиусе «r» от центра?

Я пытался поискать решение такой проблемы, но не смог его найти. Вот я и подумал спросить.

ПРОБЛЕМА:

У меня есть центр, и я хотел бы найти точку на окружности круга. Теперь ограничение в том, что я хотел бы быть рядом с «Положением игроков». Положение игроков может быть где угодно от центра и всегда будет меньше радиуса 'r' от центра. Теперь, когда я сказал «рядом», я хотел бы немного вкратце рассказать об этом. Разобьём круг на четырёхугольники. Если игрок лежит в 1-м квадрате, то любая точка на окружности, кроме 3-го квадрата, считается хорошей.

Надеюсь, я был понятен.

Изображение проблемы находится здесь.

ИЛЛЮСТРАЦИЯ ИЗОБРАЖЕНИЯ: Учитывая приведенную выше диаграмму, предположим, что радиус круга равен «r», а игрок находится в точке «Pl». Теперь, будучи случайным, я хотел бы получить координаты a Vector2 где-нибудь рядом с «x» (красный цвет). Опять же, здесь они очень произвольны, но находятся в пределах соседних четырехугольников. Требуемые координаты - координаты вектора2.

Большое спасибо!!!

с уважением,

Карснен


person karsnen    schedule 21.11.2012    source источник


Ответы (1)


В полярных координатах вам просто нужно вычислить случайный угол в рассматриваемой области (из-за положения игрока)

Например, положение игрока похоже на (R, тета) в полярных координатах, вы можете сгенерировать случайное значение для угла вашей искомой позиции между -pi и pi и добавить его к углу тета положения игрока. Или, если вы действительно хотите сделать это только в соответствии с этими «четверками»: если игрок находится в 1-м квадроцикле, вычислите случайное значение между -pi/2 и pi, если игрок находится во 2-м квадроцикле, вычислите случайное значение между 0 и 3pi/2 и так далее. .

После этого вам просто нужно преобразовать в декартовы координаты.

person stg    schedule 21.11.2012