Задача про належність точки многокутнику — задача обчислювальної геометрії, яка полягає в тому, що треба з'ясувати, як розташована на площині задана точка відносно многокутника.
Задача розв'язується, як для простих многокутників, тобто без самоперетинів, так і для многокутників, що містять перетин сторін. Розрізняють алгоритми без попередньої обробки даних і алгоритми з попередньою обробкою, в ході якої створюються структури даних, що дозволяють при повторних розв'язаннях швидше відповідати на запити про належність точок одному й тому ж многокутнику.
Облік кількості перетинів
Стандартний метод визначення належності точки простому многокутнику полягає в наступному. Випускається промінь з цієї точки в довільному напрямку (при реалізації алгоритму зручно вибрати позитивний напрямок горизонтальної осі ), і рахується скільки разів промінь перетинає ребра многокутника. Для цього достатньо пройтися в циклі по ребрах многокутника і визначити, чи перетинає промінь кожне ребро. Якщо кількість перетинів непарна, то оголошується, що точка лежить всередині многокутника, якщо парна — то зовні. Метод засновано на тому простому спостереженні, що при русі по променю з кожним перетином кордону точка поперемінно виявляється то всередині, то зовні многокутника.
В алгоритмі виникає ускладнення в виродженому випадку, коли промінь перетинає вершину многокутника. Один зі способів його подолання полягає в тому, щоб вважати, що такі вершини многокутника лежать на нескінченно малу відстань вище (або нижче) променя, тоді будуть відсутні перетини в вершині. Таким чином, перетин променя з ребром зараховується, якщо кінці ребра лежать по різні боки від променя.
Алгоритм працює за час для -кутника.
Належність точки опуклому або зірчастому -кутнику може бути визначена за допомогою двійкового пошуку за час , при витраті пам'яті та часу на попередню обробку.
Підрахунок кількості обертів
Цей метод базується на понятті індексу контуру відносно точки. Якщо індекс дорівнює нулю, то вважається, що точка розташована зовні многокутника, якщо не нуль, то всередині.
Обчислення індексу відбувається наступним чином. Випускається промінь з заданої точки в довільному напрямку і розглянемо ребра, які він перетинає. Кожному перетинанню приписується число +1 або −1, залежно від того, як ребро перетинає промінь — за годинниковою або проти годинникової стрілки. Сума отриманих величин і є індексом точки.
Література
- Препарата, Франко; Шеймос, Майкл (1985), Computational Geometry – An Introduction, Springer-Verlag, ISBN , 1ша редакція: ; 2ге видання, виправлене і довнене (Розділ 2.2.1)
Це незавершена стаття з геометрії. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Zadacha pro nalezhnist tochki mnogokutniku zadacha obchislyuvalnoyi geometriyi yaka polyagaye v tomu sho treba z yasuvati yak roztashovana na ploshini zadana tochka vidnosno mnogokutnika Zadacha rozv yazuyetsya yak dlya prostih mnogokutnikiv tobto bez samoperetiniv tak i dlya mnogokutnikiv sho mistyat peretin storin Rozriznyayut algoritmi bez poperednoyi obrobki danih i algoritmi z poperednoyu obrobkoyu v hodi yakoyi stvoryuyutsya strukturi danih sho dozvolyayut pri povtornih rozv yazannyah shvidshe vidpovidati na zapiti pro nalezhnist tochok odnomu j tomu zh mnogokutniku Oblik kilkosti peretinivStandartnij metod viznachennya nalezhnosti tochki prostomu mnogokutniku polyagaye v nastupnomu Vipuskayetsya promin z ciyeyi tochki v dovilnomu napryamku pri realizaciyi algoritmu zruchno vibrati pozitivnij napryamok gorizontalnoyi osi O x displaystyle Ox i rahuyetsya skilki raziv promin peretinaye rebra mnogokutnika Dlya cogo dostatno projtisya v cikli po rebrah mnogokutnika i viznachiti chi peretinaye promin kozhne rebro Yaksho kilkist peretiniv neparna to ogoloshuyetsya sho tochka lezhit vseredini mnogokutnika yaksho parna to zovni Metod zasnovano na tomu prostomu sposterezhenni sho pri rusi po promenyu z kozhnim peretinom kordonu tochka popereminno viyavlyayetsya to vseredini to zovni mnogokutnika V algoritmi vinikaye uskladnennya v virodzhenomu vipadku koli promin peretinaye vershinu mnogokutnika Odin zi sposobiv jogo podolannya polyagaye v tomu shob vvazhati sho taki vershini mnogokutnika lezhat na neskinchenno malu vidstan vishe abo nizhche promenya todi budut vidsutni peretini v vershini Takim chinom peretin promenya z rebrom zarahovuyetsya yaksho kinci rebra lezhat po rizni boki vid promenya Algoritm pracyuye za chas O N displaystyle O N dlya N displaystyle N kutnika Nalezhnist tochki opuklomu abo zirchastomu N displaystyle N kutniku mozhe buti viznachena za dopomogoyu dvijkovogo poshuku za chas O log N displaystyle O log N pri vitrati O N displaystyle O N pam yati ta O N displaystyle O N chasu na poperednyu obrobku Pidrahunok kilkosti obertivVnutrishni tochki mayut rizni indeksi Cej metod bazuyetsya na ponyatti indeksu konturu vidnosno tochki Yaksho indeks dorivnyuye nulyu to vvazhayetsya sho tochka roztashovana zovni mnogokutnika yaksho ne nul to vseredini Obchislennya indeksu vidbuvayetsya nastupnim chinom Vipuskayetsya promin z zadanoyi tochki v dovilnomu napryamku i rozglyanemo rebra yaki vin peretinaye Kozhnomu peretinannyu pripisuyetsya chislo 1 abo 1 zalezhno vid togo yak rebro peretinaye promin za godinnikovoyu abo proti godinnikovoyi strilki Suma otrimanih velichin i ye indeksom tochki LiteraturaPreparata Franko Shejmos Majkl 1985 Computational Geometry An Introduction Springer Verlag ISBN 0 387 96131 3 1sha redakciya ISBN 0 387 96131 3 2ge vidannya vipravlene i dovnene Rozdil 2 2 1 Ce nezavershena stattya z geometriyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi