Схема алгоритма для большего количества точек (но распределение привязано к сетке):
Построить квадратную сетку в вашем регионе.Выберите ячейку Size = 3*MinDist
.Таким образом, у вас есть (Width * Height) / (9 * MinDist^2)
точечных сайтов.
Когда вы добавляете новую точку, выбираете случайный свободный сайт и размещаете точку в узле сетки, затем случайным образом меняете ее положение в диапазоне -Mindist..MinDist
в обоих направлениях.Размер ячейки 3 гарантирует, что ни одна точка не находится слишком близко.
Пример генерации: половина сайтов занята на левой картинке, все сайты заняты на правой
Чтобы добиться лучшего «случайного вида», вы можете уменьшить размер ячейки - например, 2*MinDist
, но в этом случае вам нужно проверить соседасайтов - но только четыре из них, а не все.