Как найти диаграмму Вороного с определенной функцией расстояния?

Существует довольно много алгоритмов нахождения диаграммы Вороного с евклидовым расстоянием. Однако я не нашел алгоритмов других функций расстояния, например, манхэттенского расстояния (возможно, из-за отсутствия практического применения).

Вы можете увидеть пример в Википедии:
https://en.wikipedia.org/wiki/Voronoi_diagram#/media/File:Manhattan_Voronoi_Diagram.svg

Манхэттенская диаграмма Вороного тоже состоит из многоугольников (но невыпуклых), поэтому я предполагаю, что этот алгоритм похож на Fortune's алгоритм может быть построен. Однако при использовании более сложных функций расстояния границы больше не будут полигонами. Там будет потребность в другой структуре данных и алгоритме.

Существуют ли какие-либо алгоритмы для нахождения диаграммы Вороного с определенной функцией расстояния (в 2D для простоты)?

Примечание: мне не нужен алгоритм, работающий с пикселями, он довольно прост, мне нужен алгоритм, который находит границы ячеек.

Примечание 2 Практически мне нужна диаграмма Вороного с функцией расстояния abs(dx)^3 + abs(dy)^3, однако теоретически меня интересует, как можно составить алгоритм для других функций расстояния. Вот как выглядит Вороной с abs(dx)^3 + abs(dy)^3. Сайты непрерывны, а их ребра напоминают графики y=x^3 (просто предположение).

Кубическое расстояние


person Somnium    schedule 15.12.2015    source источник
comment
github.com/bobbysoon/TaxiVoronoi   -  person Gigamegs    schedule 15.12.2015
comment
Если вас интересует только алгоритм (без участия кода), это может быть хорошим вопросом для Computer Science SE. Есть пара вопросов, которые я нашел здесь и здесь но, к сожалению, у них нет алгоритмов.   -  person user812786    schedule 15.12.2015
comment
@whrrgarbl Меня больше интересует алгоритм, код будет слишком большим для публикации на SO. Я хочу закодировать его сам, если это возможно.   -  person Somnium    schedule 15.12.2015
comment
Кубические расстояния - это беспорядок. Попробуйте построить двухточечную диаграмму.   -  person David Eisenstat    schedule 16.12.2015
comment
@DavidEisenstat Нет, они почти нормальные. Добавил изображение.   -  person Somnium    schedule 16.12.2015


Ответы (1)


Скорее всего можно использовать пиксельное такси вороной и придать каждому полигону свой цвет. Затем вы можете использовать тест цвета пикселей, чтобы проверить границы.

person Gigamegs    schedule 16.12.2015