Я бы решил эту проблему с помощью двух проходов диаграмм Вороного:
Первый проход: Разделение региона
Первый проход будет использовать несколько разреженное распределение точек (т. Е. Расстояние между точками должно быть относительно большим), чтобы примерно разделить остров на регионы (см. Примечание ниже относительно генерации точек). Затем сгенерируйте диаграмму Вороного на основе этих точек. Это разделит остров на многоугольные области вокруг каждой точки, как показано ниже:
Второй проход: рандомизация границ
Теперь, когда остров был разделен на регионы, следующим шагом будет «пересечь» границы между ними. Для этого создайте новый слой точек, используя более компактное распределение точек (т. Е. Расстояние между точками должно быть небольшим), и снова используйте эти точки для создания другой диаграммы Вороного. Затем для каждого меньшего региона назначьте его большему региону, проверив его начальную точку. Это приведет к более зубчатым границам между большими подразделениями. Вот подробное описание того, как это выглядит при наличии обеих диаграмм Вороного:
И вот та же самая область, показывающая только окончательные границы:
Комментарии о точечной генерации
Что касается генерации точек, мне нравится использовать распределение дисков Пуассона , чтобы получить относительно хорошее и равномерное распределение точек. Другой распространенный вариант - получить аналогично равномерное распределение - использовать алгоритм Ллойда на множестве «обычных» случайных точек. LLoyd's легче кодировать, но он может принять несколько проб и ошибок, чтобы определить, сколько проходов требуется для получения желаемого результата.
Одна потенциальная проблема с этим подходом состоит в том, что разделение первого прохода может генерировать некоторые очень маленькие области. Если вы не хотите, чтобы они были в вашем конечном результате, я бы просто слил их со случайным соседним регионом.
Финальные заметки
Иллюстрации, которые я предоставил, являются растровыми изображениями, но этот метод также работает с многоугольными / векторными представлениями.