Нужна помощь в получении клеток Вороного - PullRequest
0 голосов
/ 11 октября 2019

Привет, все, что я пробую в GML (Gamemaker), что не так часто. Сейчас я пытаюсь составить диаграмму вороного. Я перевел старый код сценария Action, который нашел в Интернете, поскольку синтаксис очень похож на gml и Javascript. Я получил его работающим по большей части, и, к счастью, скрипт позволяет рисовать линии, чтобы визуализировать диаграмму Вороного, я смог вытащить эти вершины из массива (px, py, ex, ey). Однако я хочу иметь возможность формировать полигоны из этих точек.

Я создаю новый начальный объект и даю px, py, ex, ey, чтобы нарисовать окружающие края, однако некоторые из них не используют целые точки для создания многоугольника. Вот изображение ниже.

Диаграмма Вороного

Как вы обычно видите, все ребра составляют диаграмму Вороного, однако при ближайшем рассмотрении некоторые "полигоны" незакрыты и не используйте все окружающие точки вокруг него, чтобы составить многоугольник.

Полигон не закрывает или не получает окружающие точки

Я действительно в растерянности, что делать, я потратил последние 3 дня, пытаясь решить эту проблему, но япросто не могу найти способ создать ячейку для 1 объекта. Это нормальное поведение?

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

Делоне

Я прочитал немного JS, Python, C Базовый код здесь

https://rosettacode.org/wiki/Voronoi_diagram

Я не положил егопока на практике, но даже если я сгенерирую диаграмму, как я могу разделить каждую ячейку по отдельности, мне нужно, чтобы вершины были уникально разделены для одного начального объекта ??

1 Ответ

0 голосов
/ 05 ноября 2019

Вы можете перебрать все ребра треугольников и проверить, имеют ли они одинаковые ребра.

...