Пошук центру геометрії об'єкта?


37

Дано набір 2D або 3D точок:

Як знайти центр геометрії предмета?

Відповідно до наступного малюнка, центр геометрії відрізняється від центру маси, якщо його обчислювати в найпростішій формі, тобто, однорідній щільності маси. Проблема виявляється в обчисленні цих. Зазвичай, один підхід полягає в тому, щоб середні координати X і Y координати були окремо, тобто знаходили середнє положення до заданих точок (тут у 2D). Це може використовуватися як центроїд для набору точок, що представляють об’єкт. Як показано, завдяки додатковій вершині вздовж нижнього краю для простого прямокутника отриманий центроїд дорівнює (0,5,0,4), тоді як правильна відповідь - (0,5,0,5) .
Зауважте, що наведений приклад занадто простий. Однак проблема, яка представляє інтерес, полягає у складних фігурах у 2D та об'єктах у 3D, для яких доступні лише координати вершин.
До речі, інтерес представляє ефективний обчислювальний спосіб.

Відзначимо, що я перевірив деякі веб-посилання, такі як Вікіпедія, однак моя поточна проблема полягає в тому, що є група 2D і 3D точок, які хочуть знайти крапку як репрезентативну для них. Таким чином, центроїд став цікавим. Бали даються без будь-якої топологічної інформації. Ви можете вважати їх хмарними точками. Демонстрація тут надала зрозуміти, що загальновідоме усереднення координат (див., Наприклад, це запитання щодо переповнення стека ) може бути невірним, як показано в прикладі.

введіть тут опис зображення

Ось кілька реалізацій для порівняння:

  • aa = прийнята відповідь нижче
  • chull = опуклий корпус точок, тобто золотий багатокутник
  • cent = центроїд, запропонований у Вікіпедії та обговорений в аа як центроїд багатокутника
  • centl = центроїд поліліну, як пояснено в aa

Візуально centlвиглядає кращою репрезентативою щодо геометрії, що надається порівняно з cent. Дві інші виглядають тут багатообіцяюче, але зазвичай вони занадто упереджені, якщо розсіювання точок було неоднорідним, як це звичайний випадок.
А також врахуйте, що хоча опуклий корпус робить проблему досить простою, проте він може створювати занадто довгі і занадто короткі краї без симетричного розміщення в просторі, тобто обізнаність необхідна, якщо ви робите просте усереднення (тобто без зважування) для обох випадків : цілі точки (зелені) або вершини багатокутного опуклого корпусу (сині).

введіть тут опис зображення

Одне додаток можна знайти у пошуку прямокутника мінімальної площі для заданих точок? .


Чи буде це працювати? Знаходження центроїда багатокутника? (StackOverflow)
blah238

3
Я не впевнений, що таке Ваше запитання. Центр геометрії або (як правило, центроїд) може відрізнятися від барицентру (центру маси). Це добре відомий факт. Також існують різні способи обчислення центру геометрії. Дивіться: en.wikipedia.org/wiki/Triangle_center , en.wikipedia.org/wiki/Encyclopedia_of_Triangle_Centers & факультет.evansville.edu / ck6 / encyclopedia / ETC.html .
Девдатта Тенгше

1
Повторіть оновлення: коли немає топології, точкова хмара - це лише хмара точок. Ваша фігура полігонального квадрата не застосовується (а ваш "центроїд" (0,5,0,4), до речі, не виникає з будь-якої стандартної формули: симетрія сильно стверджує, що будь-яка центральна точка квадрата збігається з (0,5 , 0,5), незалежно від того, як це визначено). Для деяких ідей про пошук представницьких або центральні місць для хмар точок в двох і більше розмірах, будь ласка , см stats.stackexchange.com/questions/1927 .
whuber

1
@Developer, я бачу вашу точку тепер, ваша 5-а точка на нижній частині "прямокутника" (насправді багатокутника) робить просте усереднення вершинних координат, що дають інший барицентр, ніж у багатокутника, як пояснює відповідь Ваубера.
blah238

1
Ага! Я цілком пропустив цю п'яту вершину, хоча я шукав щось таке. Щоб допомогти майбутнім читачам, я вніс невелику редагування у питанні, щоб вказати на це. Це дійсно дістатися до суті справи, теж: вставка або видалення вершин уздовж ребер зміняться , як поли {лінія, кутник} представлені , але це не повинно змінити обчислення його вроджених геометричних властивостей. Ось чому барицентр вершин може мати майже довільне відношення до барицентрів багатокутника або його межі.
whuber

Відповіді:


44

Кожен полігон має, як мінімум, чотири чіткі "центри":

  • Барицентр його вершин.

  • Барицентр його країв.

  • Його барицентр як багатокутник.

  • Специфічний для ГІС «центр», корисний для маркування (зазвичай розраховується за допомогою недокументованих фірмових методів).

(Вони можуть випадково збігатися в особливих випадках, але для "загальних" багатокутників вони є різними точками.)

"Барицентр" взагалі є "центром маси". Три типи відрізняються тим, де розміщена маса припущення: вона знаходиться цілком на вершинах, рівномірно розтікається по краях, або рівномірно поширюється по самому полігону.

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

  1. Барицентр двох вершин (однаково зважених) - це їх середнє значення. Це отримується шляхом усереднення їх координат окремо. Геометрично це середина відрізка лінії, що з'єднує дві вершини.

  2. Індуктивно барицентр n (однаково зважених) вершин отримують шляхом усереднення їх координат окремо.

  3. Барицентр відрізка лінії є його серединою. (Це зрозуміло за допомогою симетрії.)

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

    Наприклад, розглянемо форму "L", окреслену точками (0,0), (6,0), (6,12). Є два сегменти: один довжиною 6 із серединою у ((0 + 0) / 2, (0 + 6) / 2) = (3,0) та інший довжиною 12 із серединою в ((6 + 6) / 2, (0 + 12) / 2) = (6,6). Тому їх середньозважені середні координати (x, y) з

    x = (6*3 + 12*6) / (6+12) = 5,  y = (6*0 + 12*6) / (6+12) = 4.
    

    Це відрізняється від барицентра трьох вершин, який ((0 + 6 + 6) / 3, (0 + 0 + 12) / 3) = (4,4).

    ( Редагувати. Як інший приклад, розглянемо фігуру у запитанні, яка, хоча і має квадратну форму, представлена ​​як п'ятикутник, визначений послідовністю точок (0,0), (1 / 2,0), (1,0), (1,1), (0,1). П'ять сторін мають довжини 1/2, 1/2, 1, 1, 1 і середні точки (1 / 4,0), (3 / 4,0), (1 , 1/2), (1 / 2,1) та (0,1 / 2) відповідно, тому їх середньозважена середня величина дорівнює

    [(1/2)*(1/4, 0) + (1/2)*(3/4, 0) + (1)*(1, 1/2) + (1)*(1/2, 1) + (1)*(0, 1/2)] / (1/2+1/2+1+1+1)
    = (2/4, 2/4) = (0.5, 0.5)
    

    як можна було б сподіватися, навіть незважаючи на те, що барицентр самих вершин (обчислений як у №2 вище) становить (0,5, 0,4).)

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

    ( Редагувати. Розглянемо, наприклад, багатокутник, зображений у запитанні. Ми могли б тріангулювати його трикутниками ((0,0), (1 / 2,0), (0,1)) зліва, ((0,1), (1 / 2,0), (1,1)) посередині, і ((1,1), (1,0), (1 / 2,0)) праворуч. Їх площі 1/4 , 1/2, 1/4 відповідно та їх барицентри - отримані шляхом усереднення вершин - це (1 / 6,1 / 3), (1 / 2,2 / 3) та (5 / 6,1 / 3) відповідно. Середньозважене середнє значення цих барицентрів дорівнює

    [(1/4)*(1/6,1/3) + (1/2)*(1/2,2/3) + (1/4)*(5/6,1/3)] / (1/4 + 1/2 + 1/4)
    = (12/24, 6/12)
    = (0.5, 0.5)
    

    як слід, незважаючи на наявність п’ятої вершини уздовж нижнього краю.)

Очевидно, що кожен з цих методів є ефективним : він вимагає лише одного проходу над «спагетті» поданням полігону, використовуючи (досить мало) постійний час на кожному кроці. Зауважте, що у всіх випадках, окрім першої (з чистих вершин), потрібно більше інформації, ніж просто перелік вершинних координат: вам потрібно знати і топологію фігури. У прикладі "L" нам потрібно було знати, що (0,0), наприклад, пов'язано з (6,0), а не з (6,12).

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

Ще одне узагальнення визнає, що евклідова метрика - квадратний корінь суми квадратів, за Піфагором, - може бути змінена на інші метрики Lp для p> = 1: ви берете pth корінь суми pth сил. Знайти відповідні "барицентри" вже не так просто, оскільки прекрасні властивості добавок, що експлуатуються вище (барицентри - це середньозважені середні значення барицентрів простіших частин фігури), більше не мають значення. Часто доводиться отримувати ітеративні приблизні числові рішення. Вони можуть бути навіть не унікальними.

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

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

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


Для спільноти: Такої хорошої відповіді, як ця від "бубона", можна очікувати лише на гарне запитання, так як моє знайомство з його уподобанням, таким чином, ви хотіли б усі проти заголосувати на цьому питанні, якби вам було цікаво;)
Розробник

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

Чи можете ви пояснити, чому ділянки все ще зустрічаються, використовуючи клинові вироби на кулі? Хіба область сферичного трикутника не була б більш доречною? Найближчий посилання (окрім цієї чудової відповіді!), Яку я знайшов, - це: jennessent.com/downloads/Graphics_Shapes_Online.pdf - яка використовує області сферичних трикутників.
Джейсон Дейвіс

@Jason Мене заінтригує: як ви пропонуєте використовувати сферичні області трикутника для обчислення барицентрів сферичних ознак?
whuber

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