2016-05-26 3 views
0

Я делаю игру, которая разрастается разбросанными x кол-во пунктов. Все очки имеют постоянный радиус wСоздание точек рассеяния Alogrithm

Точки должны соблюдать следующие правила:

  • Очки не могут перекрывать друг друга еще точки
  • Точки должны быть распределены друг от друга так, что каждая точка, по крайней мере DISTANCE от любой другие моменты.

Не могли бы вы назвать эффективный алгоритм для выполнения этого?

Я также делаю эту игру в Swift Sprite-Kit. Поэтому, если вы знаете какой-нибудь Sprite-Kit, вы можете реализовать его в своем ответе, иначе, если вы не знаете Swift или Sprite-Kit, вы можете объяснить словами.

+0

Что значит «Все точки имеют постоянный радиус w»? Действительно ли точки являются сферами? – vcp

+0

да все точки являются сферами – Entitize

ответ

1

Ваши два ограничения эквивалентны. Это означает, что расстояние между любыми двумя точками должно быть не менее max(w, DISTANCE).

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