Как разместить точки вокруг центральной точки в 2D? - PullRequest
1 голос
/ 24 июня 2019

Я застрял в этой проблеме: у меня есть 2D-пространство от координат -200, -200 (вверху слева) до 200 200 (внизу справа).

Теперь я хочу добавить точку вокруг центра (0,0) в случайном положении.Все идет нормально.Просто нужно выбрать случайное число от -200 до 200 для каждого x и y.

Это должно повторяться до тех пор, пока у меня не будет желаемого количества очков.

Но теперь есть две проблемы:

  1. Я не хочу, чтобы две точки находились в одной позиции.Есть ли способ проще, чем тестирование каждой точки и, если необходимо, повторение всего процесса?

  2. Я не хочу, чтобы точки мгновенно распределялись по всей карте.Они должны собираться в центре и уходить только тогда, когда в самом большом «кольце» точек вокруг центра остается только некоторое пространство.
    Но, тем не менее, время от времени между точками должны быть пустые места.

Последнее условие - моя самая большая проблема.У кого-нибудь есть идеи, как я могу решить эту проблему?

В данный момент я пытаюсь сделать это в javascript, но если это сработает, я хочу сохранить точки в базе данных с помощью mysql и добавлять один за другим с помощью php.

1 Ответ

0 голосов
/ 24 июня 2019

Я не думаю, что есть какой-либо способ избежать обнаружения дубликатов для сгенерированной точки, если только вы не генерируете всю карту за один раз, просматривая каждую точку и включая ее на основе результата случайного числа.Вы можете оценить вероятность появления точки, основываясь на формуле расстояния от центра.

Но, в общем, нет ничего плохого в подходе Монте-Карло, где вы просто генерируете приблизительно нормальное распределение точеквокруг центра.Вы можете сделать это, просто получив 3 случайных числа для x и для y, сложив их вместе и разделив на 3. Это даст вам нормальное облако точек вокруг центра.Вы можете просто выбросить любые дубликаты.

...