Разделяйте массив точек на несколько массивов точек, если они находятся далеко друг от друга - PullRequest
1 голос
/ 10 октября 2019

Я надеюсь, что здесь все ясно, я постараюсь добавить изображения, чтобы помочь людям понять мою проблему. У меня есть очень простой генератор озера шума Перлина:

Perlin noise lake generator

, который выводит озеро в виде массива точек:

[
  {x: 0, y: 0},
  ...
]

Использование простого трассировщика для генерациимногоугольник из этих точек. Это работает очень хорошо, и я был доволен этим, пока не подумал о проблеме, которая может произойти, а затем обнаружил, что проблема действительно произошла. Когда у вас есть два отдельных озера в одном куске (как это)

two separate lakes in one chunk

, трассировщик многоугольника не может создать действительный многоугольник. Я полагаю, что решение состоит в том, чтобы пойти заранее и разделить точки на группы точек, я посмотрел, как это сделать, но все, что я нашел, это алгоритм, который должен был знать, сколько должно быть групп, прежде чем он сможет работать (что я и делаюне знаю). Я полностью озадачен и хотел бы получить несколько советов о том, с чего начать. Мне не нужен полный код ответа (я могу реализовать его сам), но концепция была бы хороша.

Я все еще буду осматриваться и пробовать что-то, пока жду ответов, хотя сомневаюсь в своих знанияхчто я смогу найти что-нибудь полезное. Да, и мой полигон трассировщик использует марширующие квадраты, если это важно.

1 Ответ

0 голосов
/ 17 октября 2019

Вам нужен Алгоритм кластеризации . А поскольку вы говорите, что заранее не знаете количество кластеров, я бы порекомендовал алгоритм Среднее смещение .

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