Использование Вороного/Делоне библиотеки поколения схема нашла in this program, которая основана на оригинальной реализации Фортуне из his algorithm, со случайным набором точек в качестве входных данных, я могу получить следующие выходные данные:Как я могу получить словарь ячеек из данных диаграммы Voronoi?
- Список ребер из Delaunay Triangulation, что означает, что для каждой входной точки я могу видеть, какие точки входа являются ее соседями. Они, похоже, не в каком-то определенном порядке.
- Список вершинных пар из Voronoi Diagram, который я могу использовать для рисования диаграммы Вороного по одной линии за раз. Опять же, по-видимому, в каком-то определенном порядке.
- Безымянный список пар точек, который, кажется, только тот же список, что и 2, но в другом порядке.
- Список вершин, образованных на диаграмме Вороного, также явно не в определенном порядке.
Ниже приведен пример данных из тестового запуска моей программы с помощью этой библиотеки:
Input points:
0 (426.484, 175.16)
1 (282.004, 231.388)
2 (487.891, 353.996)
3 (50.8574, 5.02996)
4 (602.252, 288.418)
Vertex Pairs:
0 (387.425, 288.533) (277.142, 5.15565)
1 (387.425, 288.533) (503.484, 248.682)
2 (277.142, 5.15565) (0, 288.161)
3 (387.425, 288.533) (272.213, 482)
4 (503.484, 248.682) (637.275, 482)
5 (503.484, 248.682) (642, 33.7153)
6 (277.142, 5.15565) (279.477, 0)
Voronoi lines?:
0 (279.477, 0) (277.142, 5.15565)
1 (642, 33.7153) (503.484, 248.682)
2 (503.484, 248.682) (637.275, 482)
3 (387.425, 288.533) (272.213, 482)
4 (277.142, 5.15565) (0, 288.161)
5 (387.425, 288.533) (503.484, 248.682)
6 (277.142, 5.15565) (387.425, 288.533)
Delaunay Edges:
0 (282.004, 231.388) (487.891, 353.996)
1 (602.252, 288.418) (487.891, 353.996)
2 (426.484, 175.16) (487.891, 353.996)
3 (426.484, 175.16) (602.252, 288.418)
4 (50.8574, 5.02996) (282.004, 231.388)
5 (426.484, 175.16) (282.004, 231.388)
6 (50.8574, 5.02996) (426.484, 175.16)
Vertices:
0 (277.142, 5.15565)
1 (503.484, 248.682)
2 (387.425, 288.533)
3 (0, 288.161)
4 (272.213, 482)
5 (637.275, 482)
6 (642, 33.7153)
7 (279.477, 0)
Хотя приведенные выше данные достаточно, если все, что мне нужно, чтобы рисовать диаграммы Вороного и Делоне, его недостаточно информации для фактической работы, которую я пытаюсь сделать с этими диаграммами. Мне нужен словарь полигонов, образованных вершинами Вороного, индексированный входной точкой, вокруг которой образовался каждый многоугольник. Предпочтительно, для каждого многоугольника эти точки будут отсортированы по часовой стрелке.
С приведенной выше информацией я мог бы неявно назначать данные для каждого региона, при необходимости назначать данные на углы, указывать, в каких регионах обмениваются ребрами (с использованием границ Delaunay), и соответственно анализировать.
Итак, вкратце, Как я могу использовать имеющиеся у меня данные, чтобы соединить словарь, в котором ключ является одной из входных точек, а данные, индексированные этим ключом, представляют собой список верунов Вороного, которые образуют окружающий многоугольник? Или, альтернативно, это информация где-то скрыта в данных, которые мне даны?
Это все вам получить от библиотеки? Некоторые ячейки Вороного не описываются замкнутым многоугольником. – Daniyar
Это все, что мне дает библиотека. Ячейки voronoi, не описанные замкнутым многоугольником, являются (я думаю) ячейками, которые соответствуют краю прямоугольной плоскости; например, все пограничные ячейки на этой диаграмме: http://www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/voronoi-and-delaunay.png – pdusen