Існує багато способів зважування відстаней для побудови багатокутників Тіссена. Основна ідея їх побудови заснована на порівнянні відстані між довільною точкою x та двома нерухомими точками p і q ; вам потрібно вирішити, чи х «ближче» до p, ніж до q чи ні. З цією метою - принаймні концептуально - ми вважаємо відстані dp = d ( x , p ) і dq = d ( x , q ). Зважування зазвичай відбувається двома способами: точкам можна надати додатні числові ваги wp і wq, а самі відстані можна перетворити.
Щоб мати сенс, перетворення (яке я напишу як f ) повинно зростати по мірі збільшення відстаней; тобто f (d ')> f (d) всякий раз, коли d'> d> = 0. Прикладами таких перетворень є f (d) = d + 1, f (d) = d ^ 2 (Закон Рейлі про гравітацію роздрібної торгівлі ), f (d) = 1 - 1 / d (якщо всі відстані менше 1), f (d) = log (d), f (d) = exp (d) -1.
Тоді ми б сказали, що x "ближче" до p, ніж до q , коли саме
f (d ( x , p )) / wp <f (d ( x , q )) / wq.
Зауважте поділ на ваги, а не на множення: це означає, що великі ваги мають тенденцію "тягнути" точки на більші відстані. Ви побачите це у наведеному нижче прикладі.
Ось прекрасна річ і вся суть цього дещо абстрактного експозиції: хоча результуючі області Тіссен можуть мати складні, надзвичайно важкі для обчислення межі, їх порівняно легко обчислити, використовуючи представлення на основі сітки. Ось рецепт:
Для кожної вхідної точки p обчисліть її евклідову сітку відстані [d (p)].
Використовуйте алгебру карти для застосування f та ваг, тим самим повторно виражаючи кожну сітку відстані як
[fp] = f ([d (p)]) / wp.
Ось приклад з використанням f (d) = 100 + d ^ (3/2); шкала - 400 на 600.
У міру збільшення f (d) значення стає темніше. Очевидно, що відстань у цьому прикладі є відносно центральної червоної точки; інші чотири точки отримують окремі розрахунки відстані (не показано). Площі точок пропорційні їх вазі, які дорівнюють 2, 10, 3, 4 та 5.
Обчисліть локальний мінімум усіх цих сіток [fp]. Назвіть це [f]. Ось приклад.
Порівнюючи [f] з кожним [fp], кожній комірці сітки призначають ідентифікатор першого p, для якого [f]> = [fp]. (Це можна зробити за один крок, наприклад, з операцією з нижнього положення .)
(Я сумніваюся, що існує алгоритм де-небудь, який буде обчислювати рішення у векторному форматі для цієї функції зважування f.)
Очевидно, що якщо у вас є більше ніж кілька точок p, ви будете писати це сценарії, і якщо їх кількість перебігає тисячі, ви, ймовірно, відмовитеся від спроби обчислювально нездійсненної (хоча є способи прискорити обчислення шляхом додавання його).
Інший приклад, який показує полігони Тіссена на еліпсоїді, з’являється на веб- сайті /gis//a/17377/ .