Используя библиотеку генерации диаграмм Вороного / Делоне, найденную в этой программе , которая основана на оригинальной реализации Fortune его алгоритма со случайным набором точек в качестве входных данных, I могу получить следующие выходные данные:
- Список ребер из Триангуляция Делоне , означающий, что для каждой входной точки я могу видеть, какие входные точки являются ее соседями. Похоже, они не в каком-то определенном порядке.
- Список пар вершин из Диаграммы Вороного , которые я могу использовать для рисования диаграммы Вороного по одной линии за раз. Опять же, по-видимому, в определенном порядке.
- неназванный список пар точек , который, кажется, представляет собой тот же список, что и 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)
Хотя приведенные выше данные являются адекватными, если все, что мне нужно, это нарисовать диаграммы Вороного и Делоне, информации недостаточно для реальной работы, которую я пытаюсь выполнить с этими диаграммами. Мне нужен словарь многоугольников, образованных вершинами Вороного, проиндексированных по входной точке, вокруг которой сформировался каждый многоугольник. Предпочтительно, чтобы для каждого многоугольника эти точки были отсортированы по часовой стрелке.
С помощью приведенной выше информации я мог бы неявно назначать данные каждому региону, при необходимости присваивать данные углам, сообщать, какие регионы имеют общие ребра (с использованием ребер Делоне), и соответственно выполнять анализ.
Короче говоря, как я могу использовать доступные мне данные для составления словаря, в котором ключ является одной из точек ввода, а данные, индексированные этим ключом, представляют собой список вершин Вороного, которые образуют окружающий многоугольник? Или, альтернативно, эта информация где-то неявна в данных, которые мне дали?