Взвешенная диаграмма Вороного

По заданным точкам, нужно получить диаграмму Вороного где размеры полигонов пропорциональны весу точек. Я использую для этого следующую формулу:
Взвешенное расстояние = Евклидова метрика / Вес;

Дальше по этому минимальному расстоянию, отношу каждую координату к точке полигона Вороного.
Затем я использую релаксацию Ллойда - нахожу центроид каждого полигона (сумма всех координат полигона/количество координат).
И заново строю по центроидам диаграмму Вороного.

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

Пример 1(5 итераций):
Результат таблицей: https://i.stack.imgur.com/Bmncu.png
Результат графически: введите сюда описание изображения С каждой начальной итерацией процент отклонения площади уменьшается.
Но затем останавливается и не изменяется.
Если в этом пример сделать 10 итераций, то останется один полигон с отклонением 20%, что в принципе приемлемо, но хотелось бы большего.

Пример 2(5 итераций):
Результат таблицей: https://i.stack.imgur.com/j2FvU.png
Результат графически: введите сюда описание изображения Здесь все гораздо хуже, даже 100 итераций не дают желаемого результата - у некоторых полигонов отклонение площади и 40%, и 50%.

Что нужно изменить в алгоритме чтобы получить желаемый результат?


Ответы (0 шт):