Информация: taxicabgeometry.net
Интерактивный: Манхэттен-метрическая диаграмма Вороного (версия для клика)
Я катал свой собственный на python и могу подвести итог здесь: между соседними центроидами находится перпендикулярная линия в манхэттенской метрике - два луча и диагональ 45 градусов, скорее всего, если центроиды генерируются случайным образом, но также может встречаться прямая горизонтальная, вертикальная или диагональная линия под 45 градусов. Учитывая набор таких линий для каждой пары центроидов, ребра, разделяющие области, находятся среди них. Соберите точки пересечения каждой пары линий, которые находятся на равном расстоянии (в пределах эпсилона) в манхэттенской метрике до трех ближайших центроидов. Также соберите две средние точки диагонали 45 градусов, которые одинаково удалены от своих ближайших двух центроидов. Внешние политики не будут закрыты. Как с ними бороться, зависит от того, что вам нужно. Границы полигонов и вершины границ потребуют сортировки, чтобы ваши полигоны не были беспорядочными зигзагами. Порядок намотки можно определить по часовой стрелке или по другому. Можно сделать больше, все зависит от того, что вам нужно.
К сожалению, чем больше очков задействовано, тем медленнее этот процесс. Пересечение каждой биссектрисы с любой другой биссектрисой является узким местом. Я пытался использовать метод вставки с некоторым успехом, но. Теперь я думаю попробовать сначала создать связь ближайшего соседа между центроидами. Если соседи известны, биссектрисы для пересечения будут минимальными, и многие центроиды могут быть вычислены быстро.
В любом случае, метод грубой силы действительно работает:
Точка возле курсора - это на самом деле 2 точки крошечной диагонали. Это точный метод, но более сложный, чем может показаться на первый взгляд. Код Java из интерактивной ссылки выше может быть быстрее, но из него трудно получить твердую и точную геометрию.
Извините, я не знаю Р.
person
Chronocide
schedule
25.07.2015
findFn('voronoi')
дает ТОННУ результатов, но ни один из них не работает с манхэттенским расстоянием. - person Tom   schedule 23.07.2015