Обчислення центроїда сферичного багатокутника


11

Я хотів би загальний спосіб обчислити центроїди для багатокутників на кулі.

На даний момент найкращою посиланням в Інтернеті є:

Інструменти для графіки та фігур від Джеффа Дженнесса.

Описаний там метод пропонує запропонувати розкласти багатокутник на кілька сферичних трикутників та обчислити середнє значення центроїдів сферичного трикутника, зважене на площу сферичного трикутника.

Я знаю, що існує декілька способів визначення центроїда сферичного багатокутника, але я шукаю щось аналогічне наступним визначенням для точок і поліліній:

  • Бали : середнє арифметичне декартових векторів, що представляють точки.
  • Полілінії : середньозважене середнє значення декартових векторів, що представляють середні точки кожного відрізка, зважене на (сферичну) довжину кожного сегмента.

Здається розумним продовженням, щоб багатокутні центроїди визначалися як середньозважене серед трикутного розкладання, зважене за площею.

Моє запитання - чи працюватиме метод у наведеній вище посилання незалежно від використовуваного трикутника. Зокрема, він згадує розкладання на трикутники відносно довільної точки, навіть зовнішньої від багатокутника, так що деякі трикутники матимуть негативні ділянки, які сприяють негативній вазі.

Пов'язане: Як знайти центр геометрії об'єкта?

Відповіді:


9

Він не працюватиме послідовно, навіть якщо виконувати всі тріангуляції відносно однієї фіксованої точки. Проблема полягає в тому, що сферичні та евклідові розрахунки змішуються, не враховуючи, що вони можуть означати.

Один із способів зробити це очевидним - розглянути досить крайній трикутник, наприклад, майже половину півсфери. Наприклад, починаючи з (lon, lat) = (-179, 0), бігайте по екватору до (0, 0), потім до північного полюса в (0, 90), а потім назад до початку в (- 179, 0). Це трикутник 90-179-90, що включає більшу частину північної половини західної півкулі. Проблема полягає в тому, що його кінцеві точки (показані білими крапками на рисунку) лежать практично в площині: одна знаходиться на полюсі, а дві інші майже на протилежних сторонах від неї. Таким чином, їх середнє значення, спроектоване назад у сферу (червона крапка), майже на полюсі - але це приблизно далеко від будь-якого розумного центру, як можна отримати:

Великий кулястий трикутник

Як інший приклад, давайте тріангулювати багатокутник, що представляє верхню півкулю щодо її центру, Північного полюса. Ми завжди будемо ділити Західну півкулю на дві рівні половини, кожна з яких має трикутник 90-90-90 (тим самим уникаючи будь-яких проблем з величезними трикутниками, що охоплюють півсферу). Однак Східна півкуля буде розділена на п ять півмісяць. Вершини lune k ( k = 1, 2, ..., n ) мають (lon, lat) координати

((k-1) * 180/n, 0),  (k * 180/n, 0),  (k * 180/n, 90).

Луни для k = 8

На цьому малюнку показано встановлення для k = 8. Червоні точки - це окремі трикутники "центрів", обчислені відповідно до документа "Інструменти для графіки та фігур", стор. 65-67.

Роблячи обчислення, я знаходжу, що при k = 2 центр, зважений на площі, дійсно знаходиться на Північному полюсі (як це було б зазначено з міркувань симетрії), але по мірі збільшення n результат швидко переміщується в Західну півкулю і в межа, наближається до широти 89,556 градусів вздовж довготи -90 градусів. Це приблизно в 50 кілометрах на південь від самого Північного полюса.

Справді, похибка +/- 50 кілометрів для багатокутника, що охоплює 20000 кілометрів, мала; загальна кількість довільної зміни внаслідок різних тріангуляцій у цьому випадку становить лише 0,5%. Очевидно, що відносні помилки можна зробити довільно великими, включивши негативні трикутники (просто додайте і віднімайте кілька дійсно великих трикутників відносно малого трикутника). Незалежно від того, хто, хто намагається зробити сферичні обчислення, очевидно, намагається уникати помилок проекції, тому шукає високої точності. Цей метод тріангуляції неможливо рекомендувати.


Ви продемонстрували, що помилки можуть накопичуватися для великих n, але незрозуміло, що підхід обов'язково хибний. Яке значення n ви використали для досягнення граничного значення?
Джейсон Дейвіс

Крім того, велике спасибі за зроблені розрахунки та перегляд цього поглибленого. Я просто хочу трохи більше роз'яснень, перш ніж я можу поставити питання на спокій. :)
Джейсон Дейвіс

Джейсон, я додав попередній приклад, щоб дати тобі інтуїцію. Сама межа швидко наближається; через кілька десятків лун ви отримаєте кілька значущих цифр. Але новий приклад повинен містити будь-які затяжні сумніви, що ця зважена триангуляція робить щось розумне - крім невеликих трикутників, де вам набагато краще робити обчислення в прогнозованих координатах. Єдина причина робити сферичні обчислення - це те, що ваша область аналізу справді глобальна, оскільки тоді всі прогнози вносять багато спотворень.
whuber

1
Фантастично, дякую. Тож якщо я правильно розумію, просто усереднення декартових векторів не спричиняє розумного центроїда для сферичного трикутника (особливо великих, як ваш перший приклад). Я досліджую кращі методи, наприклад, знаходжу перехрестя медіанів великого кола.
Джейсон Дейвіс

До речі, я все ще сподіваюсь, що центроїд із зваженою сферою на площу, подібний до вище, спрацює. Уявіть, що кожному багатокутнику надається тривимірний об'єм, додаючи вершину в початок сфери. Потім підвісьте сферу невидимою струною, з'єднаною з її походженням, і знайдіть стійку рівновагу. Центроїд - найнижча точка (це проекція центру маси на сферичну поверхню). Це повинно бути осторонь кількох неоднозначних випадків, наприклад, смуги, що йде навколо екватора, де я можу просто вибрати розумну точку. Раді обговорити в новому запитанні, якщо ви вважаєте, що це того варте.
Джейсон Дейвіс

3

Це гарна ідея перерахувати властивості, якими повинен володіти центроїд багатокутника. Ось мої критерії:

(а) Це властивість внутрішнього полігона (замість вершин або ребер). Таким чином, розділення краю надвоє, вставляючи додаткову вершину, не повинно змінювати положення центроїда. Зауважимо, що визначення Дженнесса від центру не відповідає цьому критерію, оскільки положення центроїда буде залежати від того, як поділяється багатокутник на трикутники.

(b) Трохи збурюючи форму багатокутника, слід трохи перемістити центроїд. Тут потрібно накласти обмеження на загальну протяжність багатокутника (наприклад, на єдину півкулю). Без цього обмеження легко побудувати випадки, коли центроїд раптово поворотить на протилежну сторону землі легким рухом вершини. Цей стан виключає методи, які вимагають, щоб центроїд лежав всередині полігону.

(c) Це повинно зводитися до планарного визначення центроїда для малих багатокутників.

Ось два підходи, які відповідають цим критеріям:

(1) Обчисліть центроїд для еліпсоїдального многокутника в трьох вимірах і направляйте назад на поверхню еліпсоїда (уздовж нормалі до еліпсоїда). Велика перевага: центроїд можна обчислити, розбивши багатокутник на простіші форми.

(2) Центроїд - точка з мінімальною геодезичною відстані RMS до всіх точок у внутрішній частині багатокутника. Див. Buss і Fillmore, "Сферичні середні значення та додатки до сферичних сплайнів та інтерполяція", транзакції ACM на графіці 20 , 95–126 (2001). Велика перевага: отримана точка не залежить від того, як поверхня вбудована в R 3 .

На жаль, жодне з цих визначень неможливо просто застосувати на практиці. Однак перший метод можна здійснити просто для сфери. Найкраща "елементарна" область для використання - чотирикутник, обмежений краєм багатокутника, двома меридіанами через кінцеві точки ребра та екватором. Результат для всього багатокутника тягне за собою підсумовування внесків по краях. (Необхідні додаткові кроки, якщо багатокутник оточує полюс.)

Припустимо, кінцевими точками ребра є (φ 1 , λ 1 ) і (φ 2 , λ 2 ). Нехай азимути ребра і кінцевих точок будуть віднесені по α 1 і α 2 . Якщо припустити радіус сфери дорівнює 1, площа чотирикутника дорівнює

  A = α 2 - α 1
      = 2 tan −1 [tan ½ (λ 2 - λ 1 ) sin ½ (φ 2 + φ 1 ) / cos ½ (φ 2 + φ 1 )]

(Ця формула області, завдяки Бесселю, значно краще поводиться чисельно, ніж загальновживана формула L'Huilier про область трикутника.)

Компоненти центроїда для цього чотирикутника задані

  2 ⟨ х ⟩ = φ 2 Sin (λ 2 - λ 0 ) - φ 1 Sin (λ 1 - λ 0 )   2 ⟨ у ⟩ = сов α 02 - σ 1 ) - (φ 2 сов (λ 2 - λ 0 ) - φ 1 сов (λ 1 - λ 0 ))   2 ⟨ г ⟩ = (λ 2 - λ 1 ) - SIN α 02 - σ

1 )

де σ 2 - σ 1 - довжина ребра, а λ 0 і α 0 - довгота і азимут краю, де він перетинає екватор, а осі x і y орієнтовані так, що перетинання екватора знаходиться на x = 1, у = 0. ( z, звичайно, вісь через полюс)


Чи можете ви пояснити, чому положення центроїдів Дженнес залежатиме від того, як поділяється багатокутник на трикутники? Я знаю з прикладу @ whuber, що підрахунок центру Дженнеса є неправильним для сферичних трикутників, але що робити, якщо замість цього використовується центроїд, заснований на медіанах сферичного трикутника? Чи все-таки це не вдасться?
Джейсон Дейвіс

Дженнес ефективно замінює сферичний багатокутник набором плоских трикутників і обчислює їх центроїд. Очевидно (?), Результат буде залежати від розподілу. Зробити розрахунок, який я окреслив за допомогою центроїдів сферичних трикутників, це чудово. Ви можете знайти формулу центроїда в JE Brock, Інерційному тензорі сферичного трикутника, J. ​​Applied Mechanics 42, 239 (1975) dx.doi.org/10.1115/1.3423535
cffk

Я ще раз подивився на папір Брока. Його формула для центру маси сферичного трикутника передбачає суму над ребрами трикутника. Тому можна тривіально узагальнити застосувати до багатокутника (без необхідності розбивати його на трикутники).
cffk

Ви не хочете запропонувати довідку для обчислення площі завдяки Бесселю? Я, здається, не можу його знайти ніде, і мені цікаво написати швидку (і точну) процедуру сферичного полігону. Дякую!
Джейсон Дейвіс

Я знайшов це і зрозумів, що ти переклав його англійською мовою, тож дякую. :)
Джейсон Дейвіс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.