Schelet rectiliniu
Un schelet rectiliniu este o metodă de reprezentare a unui poligon prin scheletul său topologic . Scheletul rectiliniu este similar în anumite privințe cu axele mediane , dar diferă prin faptul că scheletul constă din segmente de linie, în timp ce axele mediane ale unui poligon pot include curbe parabolice.
Scheletele rectilinii au fost definite pentru poligoane simple de către Eichholzer, Aurenhammer, Alberts și Gärtner [1] și generalizate la grafuri rectilinii plane Eichholzer și Aurenhammer [2] . În interpretarea scheletelor rectilinii ca proiecții ale suprafeței acoperișurilor, acestea au fost discutate intens de G. A. Peshka [3] .
Definiție
Scheletul rectiliniu al unui poligon este definit ca un proces de contracție continuă în care laturile se mișcă paralel cu ele însele cu o viteză constantă. Când laturile se mișcă în acest fel, vârfurile în care se intersectează perechi de laturi se mișcă și ele cu o viteză dependentă de unghiul de la vârf. Dacă unul dintre aceste vârfuri în mișcare se ciocnește cu o latură neadiacentă, poligonul se împarte în două și procesul continuă pentru fiecare parte separat. Un schelet rectiliniu este un set de curbe de-a lungul cărora trec vârfurile în timpul procesului de compresie. Ilustrația prezintă procesul de micșorare a unui poligon (figura de sus), în figura din mijloc este evidențiat cu albastru un schelet rectiliniu.
Algoritmi
Un schelet rectiliniu poate fi obținut prin modelarea procesului de compresie. Mulți algoritmi de schelet diferiți fac exact asta, diferând în datele de intrare și în structurile de date pe care le folosesc pentru a detecta modificări combinatorii în poligonul de intrare în timpul compresiei.
- Eichholzer și colab. [1] [2] au arătat cum se pot calcula schelete drepte pentru poligoane 2D arbitrare în O( n 3 log n ), sau mai precis, în O(( n 2 + f ) log n ) timp , unde n este numărul de vârfuri poligonului de intrare și f este numărul de evenimente flip în timpul construcției. Cea mai cunoscută estimare pentru f este O( n 3 ).
- Un algoritm cu un timp de rulare în cel mai rău caz de O( nr log n), sau pur și simplu O( n 2 log n), a fost dat de Huber și Held și ei susțin că algoritmul lor rulează în timp aproape liniar pentru majoritatea intrărilor [4] ] [5 ] .
- Piotr Völkel și Stjepan Obdrzalek au dezvoltat un algoritm despre care ei spun că are o eficiență de O(nr + n log r) [6] [7] . Cu toate acestea, au existat rapoarte că algoritmul lor este incorect [8] [9] .
- Folosind structura de date pentru problema cu două culori a celei mai apropiate perechi de puncte , Eppstein și Erickson au arătat cum se construiesc schelete rectilinii folosind un număr liniar de actualizări ale structurii de date a celor mai apropiate perechi de puncte. Structura de date a celor mai apropiate perechi de puncte, bazată pe quadtree , oferă un algoritm cu timpul de rulare O( nr + n log n ), în timp ce o structură de date mult mai complexă duce la o limită asimptotică mai bună a timpului de rulare O( n 1 ). + ε + n 8/11 + ε r 9/11 + ε ) , sau, mai simplu, O( n 17/11 + ε ) , unde ε este orice constantă mai mare decât zero [10] . Acesta rămâne cel mai bun (cel mai rău caz) timp de rulare limitat pentru construirea unui schelet rectiliniu fără constrângeri de intrare, dar algoritmul este complex și nu a fost implementat.
- Pentru poligoane simple , sarcina de a construi un schelet rectiliniu este mai ușoară. Cheng și Wingeron au arătat cum se calculează scheletul rectiliniu al unui poligon simplu cu n vârfuri, dintre care r au unghiuri mai mari decât , în timp O( n log 2 n + r 3/2 log r ) [11] . În cel mai rău caz, r poate fi liniar și timpul de rulare este redus la O( n 3/2 log n ).
- Un poligon monoton în raport cu o dreaptă L este un poligon cu proprietatea că intersecția oricărei linii ortogonale la L cu poligonul este un singur segment. Dacă un poligon monoton este luat ca intrare, scheletul său rectiliniu poate fi construit în timp O( n log n ) [12] .
Aplicații
Fiecare punct din interiorul poligonului de intrare poate fi ridicat (coordonata z a punctului) în spațiul 3D în timpul necesar pentru a ajunge la acel punct în timpul procesului de reducere. Suprafața 3D rezultată are o înălțime constantă pe părțile laterale ale poligonului și se ridică la un unghi constant față de acestea, cu excepția punctelor de pe scheletul rectiliniu însuși, unde părți ale suprafeței se întâlnesc în unghiuri diferite. Astfel, un schelet rectiliniu poate fi folosit ca ansamblu de coame pentru acoperișul unei clădiri susținute de pereți sub forma unui poligon inițial [1] [13] . Figura de jos din ilustrație arată suprafața obținută în acest fel dintr-un schelet rectiliniu.
Eric Demaine, Martin Demaine și Anna Lubiv au folosit scheletul rectiliniu ca parte a tehnicii de pliere a unei foi de hârtie, astfel încât un anumit poligon să poată fi obținut printr-o singură tăietură dreaptă ( Tăierea unui poligon cu o singură tăietură ), și probleme legate de origami [14] .
Barquet și colaboratorii au folosit schelete rectilinii într-un algoritm pentru găsirea unei suprafețe tridimensionale, care este o interpolare a două linii poligonale date [15] .
Tanase și Weltkamp au propus descompunerea poligoanelor concave în regiuni convexe folosind schelete rectilinii ca pas în pregătirea pentru recunoașterea formei în procesarea imaginilor [16] .
Bagheri și Razzazi au folosit schelete rectilinii pentru a poziționa vârfurile într-un algoritm de vizualizare a graficului, cu condiția ca întregul grafic să se afle în interiorul unui poligon [17] .
Scheletul rectiliniu poate fi folosit pentru a construi o curbă caracteristică a corecțiilor poligonului cu colțuri teșite, similară construcției unei curbe caracteristice cu colțuri rotunjite formate din axele mediane. Tomoeda și Sugihara au aplicat această idee pentru a proiecta semne (de trafic) care sunt vizibile la unghiuri mari și cu aparentă tridimensionalitate [18] . În mod similar, Asente și Carr au folosit schelete liniare pentru a dezvolta gradienți de culoare pentru contururile literelor și a altor forme [19] .
Ca și în cazul altor tipuri de schelete, cum ar fi axele mediane , un schelet rectiliniu poate fi utilizat pentru a transforma o regiune 2D în reprezentarea sa simplificată 1D. De exemplu, Hauntert și Sester descriu utilizarea acestui tip de schelete rectilinii în sistemele de informații geografice pentru a găsi linia centrală a drumurilor [20] [21] .
Orice arbore fără vârfuri de gradul doi poate fi realizat ca un schelet rectiliniu al unui poligon convex [22] . Corpul convex al acoperișului corespunzător acestui schelet rectiliniu formează realizarea lui Steinitz a graficului Halin format dintr-un copac prin unirea frunzelor acestuia într-un ciclu.
Dimensiuni mai mari
Burket, Eppstein, Goodrich și Waksman au definit o versiune de schelete rectilinii pentru poliedre 3D , au descris un algoritm pentru calcularea acestora și au analizat complexitatea algoritmului pe mai multe tipuri de poligoane [23] .
Huber, Eichholzer, Hackl și Vogtenhuber au investigat spațiile metrice , în care coincid diagramele Voronoi și scheletele rectilinii corespunzătoare. Pentru spațiile bidimensionale, există o descriere completă a unor astfel de metrici. Pentru dimensiuni mai mari, această metodă poate fi înțeleasă ca o generalizare a scheletelor rectilinii la o anumită formă de obiecte într-o dimensiune arbitrară folosind diagramele Voronoi [24] .
Note
- ↑ 1 2 3 Aichholzer, Aurenhammer, Alberts, Gärtner, 1995 , p. 752–761.
- ↑ 1 2 Aichholzer, Aurenhammer, 1996 , p. 117–126.
- ↑ Peschka, 1877 .
- ↑ Huber, Held, 2010 .
- ↑ Huber, Held, 2011 , p. 171–178.
- ↑ FME (Felkel, Obdrzalek) .
- ↑ Felkel, Obdrzalek, 1998 , p. 210–218.
- ↑ Huber, 2012 .
- ↑ Yakersberg, 2004 .
- ↑ Eppstein și Erickson 1999 , p. 569–592.
- ↑ Cheng, Vigneron, 2002 , p. 156–165.
- ↑ ( Biedl, Held, Huber, Kaaser, Palfrader 2015 ). După cum au observat de către Beadle și colab., algoritmul publicat anterior de Das și colab. nu este corect așa cum este descris și funcționează bine doar pentru intrările în poziție generală atunci când nu au loc evenimente de la vârf la vârf ( Das, Mukhopadhyay, Nandy, Patil, Rao 2010 )
- ↑ David Belanger .
- ↑ Demaine, Demaine, Lubiw, 1998 , p. 104–117.
- ↑ Barequet, Goodrich, Levi-Steiner, Steiner, 2003 , p. 119–127.
- ↑ Tănase, Veltkamp, 2003 , p. 58–67.
- ↑ Bagheri, Razzazi, 2004 , p. 239–254.
- ↑ Tomoeda, Sugihara, 2012 , p. 144–147.
- ↑ Asente, Carr, 2013 , p. 63–66.
- ↑ Haunert, Sester, 2008 , p. 169–191.
- ↑ David Raleigh, 2008 .
- ↑ Aichholzer, Cheng, Devadoss, Hackl, Huber, Li, Risteski, 2012 .
- ↑ Barequet, Eppstein, Goodrich, Vaxman, 2008 , p. 148–160.
- ↑ Huber, Aichholzer, Hackl, Vogtenhuber, 2014 .
Literatură
- Oswin Aichholzer, Franz Aurenhammer, David Alberts, Bernd Gärtner. Un nou tip de schelet pentru poligoane // Journal of Universal Computer Science. - 1995. - Vol. 1 , numărul. 12 . - S. 752-761 . - doi : 10.1007/978-3-642-80350-5_65 .
- Oswin Aichholzer, Franz Aurenhammer. Proc. a 2-a ana. Int. Conf. Calculatoare și combinatorică (COCOON '96). - Springer-Verlag, 1996. - T. 1090. - S. 117-126. — (Note de curs în Informatică).
- Gustav A. Peschka. Kotirte Ebenen: Kotirte Projektionen und deren Anwendung; Vortrage. — Brno: Buschak & Irrgang, 1877.
- Stefan Huber, Martin Held. Proceedings of the 22th Canadian Conference on Computational Geometry. — 2010.
- Stefan Huber, Martin Held. Proceedings of the Twenty-Seventh Annual Symposium on Computational Geometry (SCG'11), 13–15 iunie 2011, Paris, Franța. - 2011. - S. 171-178.
- Petr Felkel, Štěpán Obdrzalek. Transformatori F.M.E. CenterLineReplacer . Software sigur . Preluat: 9 martie 2017. (nedefinit)
- Petr Felkel, Štěpán Obdrzalek. SCCG 98: Proceedings of the 14th Spring Conference on Computer Graphics. - 1998. - S. 210-218.
- Stephen Huber. Calcularea scheletelor drepte și a graficelor de motociclete: teorie și practică. - Shaker Verlag, 2012. - ISBN 978-3-8440-0938-5 .
- Evgeny Yakersberg. Morphing între forme geometrice folosind interpolarea bazată pe schelet drept. — Institutul de Tehnologie din Israel, 2004.
- David Eppstein, Jeff Erickson. Ridicarea acoperișurilor, ciclurile de prăbușire și jocul de biliard: aplicații ale unei structuri de date pentru găsirea interacțiunilor pe perechi // Geometrie discretă și computațională . - 1999. - T. 22 , nr. 4 . - S. 569-592 . - doi : 10.1007/PL00009479 .
- Siu-Wing Cheng, Antoine Vigneron. Proceedings of the 13th Annual ACM-SIAM Symposium on Discrete Algorithms. - 2002. - S. 156-165.
- Therese Biedl, Martin Held, Stefan Huber, Dominik Kaaser, Peter Palfrader. Un algoritm simplu pentru calcularea scheletelor drepte ponderate pozitiv ale poligoanelor monotone // Litere de procesare a informațiilor. - 2015. - T. 115 , nr. 2 . - S. 243-247 . - doi : 10.1016/j.ipl.2014.09.021 .
- Gautam K. Das, Asish Mukhopadhyay, Subhas C. Nandy, Sangameswar Patil, SV Rao. Proceedings of the 22th Canadian Conference on Computational Geometry. — 2010.
- David Belanger. Proiectarea acoperișurilor clădirilor (link indisponibil) . Preluat la 8 martie 2017. Arhivat din original la 21 ianuarie 2012. (nedefinit)
- Erik Demaine, Martin Demaine, Anna Lubiw. Lucrări revizuite de la Conferința din Japonia privind geometria discretă și computațională (JCDCG'98). - Springer-Verlag, 1998. - T. 1763 . - S. 104-117 . - doi : 10.1007/b75044 .
- Gill Barequet, Michael T. Goodrich, Aya Levi-Steiner, Dvir Steiner. Actele celui de-al paisprezecelea simpozion anual ACM-SIAM despre algoritmi discreti. - 2003. - S. 119-127.
- Mirela Tănase, Remco C. Veltkamp. Proceedings of the 19th Annual ACM Symposium on Computational Geometry . - 2003. - S. 58-67. doi : 10.1145/ 777792.777802 .
- Alireza Bagheri, Mohammadreza Razzazi. Desenarea arborilor liberi în interiorul unor poligoane simple folosind scheletul poligonului // Calcul și informatica. - 2004. - T. 23 , nr. 3 . - S. 239-254 .
- Akiyasu Tomoeda, Kokichi Sugihara. Simpozionul internațional al nouălea privind diagramele Voronoi în știință și inginerie (ISVD 2012). - 2012. - S. 144-147. - doi : 10.1109/ISVD.2012.26 .
- Paul Asente, Nathan Carr. Proceedings of the Symposium on Computational Aesthetics (CAE '13, Anaheim, California). - New York, NY, SUA: ACM, 2013. - P. 63-66. — ISBN 978-1-4503-2203-4 . - doi : 10.1145/2487276.2487283 .
- Jan-Henrik Haunert, Monika Sester. Colapsul zonei și liniile centrale ale drumului bazate pe schelete drepte // Geoinformatica. - 2008. - T. 12 , nr. 2 . - S. 169-191 . - doi : 10.1007/s10707-007-0028-x .
- David Baring Raleigh. Straight Skeleton Survey Ajustarea liniilor centrale ale drumurilor din datele de achiziție grosieră GPS: Un studiu de caz în Bolivia. — Universitatea de Stat din Ohio, Științe geodezice și topografie, 2008.
Oswin Aichholzer, Howard Cheng, Satyan L. Devadoss, Thomas Hackl, Stefan Huber, Brian Li, Andrej Risteski. Proceedings of the 24th Canadian Conference on Computational Geometry (CCCG'12). — 2012.
Gill Barequet, David Eppstein, Michael T. Goodrich, Amir Vaxman. Proc. Al 16-lea Simpozion European de Algoritmi. - Springer-Verlag, 2008. - T. 5193. - S. 148-160. — (Note de curs în Informatică). - doi : 10.1007/978-3-540-87744-8_13 .
Stefan Huber, Oswin Aichholzer, Thomas Hackl, Birgit Vogtenhuber. Proc. A 26-a Conferință canadiană privind geometria computațională (CCCG'14). — 2014.
Link -uri