Как я могу сделать древовидные карты Вороного?

Я хочу сделать древовидные карты Вороного для статистических данных, например alt textновости

Вы знаете, как я могу сделать это на Perl, PHP, Ruby или Python?


person freddiefujiwara    schedule 08.05.2009    source источник
comment
любопытный пример фото. Я не думаю, что есть какой-то набор точек, который дает это как тесселяцию Вороного. в частности две длинные прямые линии вызывают у меня подозрения.   -  person mariotomo    schedule 03.08.2009
comment
Это могло бы быть, если бы был разрешен иерархический порядок (т.е. мозаика более низких уровней внутри каждой ячейки). Затем в дереве должен быть первый уровень, состоящий из двух элементов (вертикальная черта появится, если две точки имеют одинаковую высоту); второй и последний уровень будет содержать точки ячеек, показанных с каждой стороны вертикальной линии. Кстати, это изображение — первый результат при поиске в Google древовидных карт Вороного; см. www-hagen. informatik.uni-kl.de/~kerren/courses/lecture/ws06/   -  person AticusFinch    schedule 29.08.2009


Ответы (7)



Math::Geometry::Voronoi

person Sinan Ünür    schedule 08.05.2009

Только что нашел эту страницу. Я работал над демонстрационным апплетом Вороного, используя Javascript/canvas, после перевода на Javascript версии C# алгоритма Стивена Форчуна Бенджамина Диттеса (доступно в Code Project, см. «Алгоритм Вороного Фортуны, реализованный на C#»). Вот страница, которая включает алгоритм Вороного Fortune в Javascript: http://www.raymondhill.net/voronoi/voronoi.php Это первая итерация, я планирую адаптировать ее дальше, чтобы она лучше подходила для Javascript. Надеюсь это поможет.

person Community    schedule 26.06.2009
comment
Потрясающий ! Спасибо за ссылку :) - person conradkleinespel; 05.02.2012

Во-первых, в линиях нет ничего странного: это результат того, что это не обычная тесселяция Вороного, а взвешенная по площади тесселяция Вороного (AWT), возможно, даже центроидальная тесселяция Вороного (CVT). При этом, чтобы иметь области Вороного (многоугольники) со значительно различающимися площадями (что будет отражать некоторые атрибуты данных), вам нужны AWT (предпочтительно реализованные как CVT, чтобы сохранить хорошие соотношения сторон для полигонов); обычный алгоритм Вороного (предложенный некоторыми людьми выше) не сможет вам помочь. Вероятно, для этого нет прямого решения, особенно для скриптовых языков, поскольку вычислительная сложность из-за итеративных шагов обновления для AWT довольно высока. Вы должны найти работу над «Картами дерева Вороного» и «Динамическими картами дерева Вороного» Balzer et al. и Суд и др. получить представление об алгоритме, а затем реализовать его самостоятельно (все, что вам нужно, есть в их статьях).

person Anonymous    schedule 15.05.2010

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

http://www.oxfish.com/python/voronoi.py

(Заархивированная копия на обратном пути)

person mariotomo    schedule 30.07.2009

Джеймс Таубер пишет руководство, в котором используется JavaScript и алгоритм Fortune для построения диаграммы Вороного в элемент canvas: Учебное пособие по Voronoi Canvas

Он еще не завершен (он находится в части 3 из 4), но, я думаю, там достаточно, чтобы завершить его.

person brianpeiris    schedule 08.05.2009
comment
танки!!. но я хочу рисовать ограниченные вороные; и карты деревьев... - person freddiefujiwara; 08.05.2009

Последняя версия (2.0) Macrofocus TreeMap включает в себя, среди прочего, алгоритм Вороного.

person Edgard Glark    schedule 26.07.2011