Изменения

Перейти к: навигация, поиск

Straight skeleton

1945 байт добавлено, 13:48, 26 октября 2014
описаны почти все другие алгоритмы
{{В разработке}}
Существует целый класс структур типа <tex>\mathrm{skeleton}</tex>, которые описывают базовые топологические свойства объектов. Структура <tex>\mathrm{straight}\ \mathrm{skeleton}</tex> была придумала Oswin Aichholzer<ref>[http://www.jucs.org/jucs_1_12/a_novel_type_of/Aichholzer_O.pdf Oswin Aichholzer, Franz Aurenhammera, "A Novel Type of Skeleton for Polygons"]</ref>. Она используются в различных практических задачах (проектирование крыш для зданий) и для доказательства некоторых теорем<ref>[http://en.wikipedia.org/wiki/Fold-and-cut_theorem Wikipedia {{---}} Fold-and-cut theorem]</ref>.
== Топологические свойства ==
{{Определение
== Wavefront-алгоритм ==
Существует простой в понимании и реализации Рассмотрим алгоритм для построения <tex> \mathrm{straigt}\ \mathrm{skeleton}</tex> на основе [[Триангуляция полигонов (ушная + монотонная)мотографов.{{TODO |триангуляции]], который работает за время <tex> \mathcal{Ot = Алгоритм на мотографах}}(n^3 \log n)</tex><ref>[http://www.sthu.org/research/publications/files/eurocg2010-slides.pdf Stefan Huber, Martin Held, "Straight Skeletons and their Relation to Triangulations"]</ref>
Рассмотрим оригинальный == Другие алгоритмы ==Существует простой в понимании и реализации алгоритмдля построения <tex> \mathrm{straigt}\ \mathrm{skeleton}</tex> на основе [[Триангуляция полигонов (ушная + монотонная)|триангуляции]], который был предложен авторами этой структурыработает за время <tex> \mathcal{O}(n^3 \log n)</tex><ref>[http://www.sthu.org/research/publications/files/eurocg2010-slides.pdf Stefan Huber, Martin Held, "Straight Skeletons and their Relation to Triangulations"]</ref>.Aichholzer смог обобщить этот алгоритм для построения <tex> \mathrm{straigt}\ \mathrm{TODO | t skeleton}</tex> произвольного планарного графа<ref>[http://citeseerx.ist.psu.edu/viewdoc/summary?doi= 10.1.1.33.2586 Oswin Aichholzer, Franz Aurenhammera, "ПростойStraight Skeletons for General Polygonal Figures in the Plane" ]</ref>. Также автором в его оригинальной статье был представлен алгоритм построения данной структуры, базирующийся на понятии '''волнового фронта''' (англ. ''wavefront''). Этот алгоритм может быть реализован за время <tex> \mathcal{O}(n^3 )</tex> с использованием <tex> \mathcal{O}(n)</tex> памяти либо с использованием [[Двоичная куча | приоритетной очереди]] за время <tex> \mathcal{O}(n^2 \log n)</tex> и <tex> \mathcal{O}(wavefrontn^2)</tex> памяти<ref>[http://www.jucs.org/jucs_1_12/a_novel_type_of/Aichholzer_O.pdf Oswin Aichholzer, Franz Aurenhammera, "A Novel Type of Skeleton for Polygons"]</ref>. Известен алгоритм построения <tex> \mathrm{straight}\ \mathrm{skeleton} </tex> для [[Триангуляция полигонов (ушная + монотонная)#def_monotone_polygon|монотонных полигонов]] за время <tex> \mathcal{O}(n \log n)</tex> с использованием <tex> \mathcal{O}(n)</tex> памяти<ref>[http://www.cs.bgu.ac.il/~eurocg14/papers/paper_9.pdf Therese Biedl, Martin Held, Stefan Hubert, Dominik Kaaser, Peter Palfrader, "Straight Skeletons of Monotone Polygons"]</ref>.
== Другие алгоритмы ==Известен Существует и более сложный алгоритм<ref>[http://www.cs.bgu.ac.il/~eurocg14/papers/paper_9.pdf Straight Skeletons of Monotone Polygons]</ref> построения , придуманный Petr Felkel, который строит <tex> \mathrm{straight}\ \mathrm{skeleton} </tex> для монотонных полигонов за время <tex> \mathcal{O}(nm + n \log n)</tex> с использованием , где <tex> \mathcaln </tex> {{O---}}(n)общее число вершин в полигоне, <tex> m </tex> памяти. Существует и более сложный алгоритм{{---}} число вогнутых вершин в полигоне<ref>[http://www.dma.fi.upm.es/mabellanas/tfcs/skeleton/html/documentacion/straight%20skeletons%20implementation.pdf Petr Felkel, Stepan Obdrazalek, "Straight Skeleton Implementation"]</ref>, который строит . Немного модифицированный этот алгоритм используется в открытой библиотеке вычислительной геометрии CGAL<texref> \mathrm{straight}\ \mathrm{skeleton} [http://cmp.felk.cvut.cz/~xobdrzal/publications/bachelorthesis.pdf Stepan Obdrazalek, "The Angular bisector network Implementation and the CGAL library"]</texref> за время <tex> \mathcal{O}. Однако этот алгоритм всё равно ещё достаточно медленный. В реальной жизни используют модификации этого алгоритма или более сложные алгоритмы. В данном конспект был (nm + n \log nP.S. точнее, ещё будет)</tex>представлен алгоритм на основе мотографов, который придумали Stefan Huber и Martin Held. Они говорят, где <tex> n </tex> {{---}} общее число вершин в полигонечто даже смогли реализовать этот алгоритм, <tex> m </tex> {{---}} число вогнутых вершин в полигонено код нигде не выкладывали.
== Примечания ==
== Источники информации ==
* [http://en.wikipedia.org/wiki/Straight_skeleton Wikipedia {{---}} Straight skeleton]
* [http://www.sthu.org/research/publications/files/phdthesis.pdf Computing Straight Skeletons and Motorcycle Graphs: Theory and Practice]
* [https://liorpachter.wordpress.com/tag/straight-skeleton/ Designing roofs and drawing phylogenetic trees]
* [http://resources.mpi-inf.mpg.de/departments/d1/teaching/ss10/Seminar_CGGC/Slides/09_Dinu_SSke.pdf Eric Berberich, "Straight Skeleton, Computational Geometry and Geometric Computing Seminar"]
* [http://cmp.felk.cvut.cz/~xobdrzal/publications/bachelorthesis.pdf Stepan Obdrazalek, "The Angular bisector network Implementation and the CGAL library"]
[[Категория: Вычислительная геометрия]]
[[Категория: Скалярное произведение и мера]]
[[Категория: Структуры данных]]

Навигация