• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,429
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
27
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Граматики за генеративно изкуство ● Шарка на Труше ● L – системи ● Идея ● Описание ● Демонстрации ● Софтуер Подготвени от Г.Пенков като част от курса на ФМИ за зимен семестър 2010/2011. Заглавното изображение адаптирано от оригиналната граматика от http://contextfree.lazymoon.org.
  • 2. Шарка на Труше ● Себастиен Труше е френски монах от Доминиканския орден, живял през 17/18в. ● Известен с постиженията си в областта на хидравликата, графиката, математиката и типографията ● През 1704 разглежда всички възможни форми, които се получават от подредбата на правоъгълни триъгълници разположени в четерите края на квадрат.
  • 3. Разновидности ● При замяна на шартката с други основни форми се получават интересни резултати:
  • 4. Разновидности...
  • 5. ?
  • 6. От галерията на Contexfree.org Eco by Aihle http://www.contextfreeart.org/gallery/view.php?id=1937
  • 7. От галерията на Context Free startshape D   rule D { C {r 15} C {r 45} } rule C { B {} B {f -90} }   rule B { A {} A {r 60} A { r 120 } A { r 180 } A { r 240 } A { r 300 } }   rule A { CIRCLE {s 1 .0006} A {x .9 r 120.21 s .99 b .0005 } } Star by Latex http://www.contextfreeart.org/gallery/view.php?id=45
  • 8. Линдемаер системи ● Разработени от биолога Аристид Линденмаер ● Пъвоначално създадени за моделиране растежа на водорасли и други растения ● Използвали са се за илюстриране отношенията м/у съседните клетки ● В последствие се превръщат в стандартен метод за описание на сложни структури с разклонения ● Рекурсивната натура на L-system ги прави подходящи за описание на фрактали ● Намират разнообразно приложение при създаването на генеративни структури
  • 9. L-Systems ● Описват се от множеството: G = (V, ω , Σ) ● ...където ● V е множество от символи, всеки от който може да има извод (да бъде разписан в друг) ● ω е аксиома ● Σ – множество от правила за извод ● Нарича се още Semi-Thue граматика, еквивалент на граматика от Тип 0 (общ тип) ● Обикновено се смята, че са от някакъв порядък ● Разликата с другите граматики от формализма на Чомски е, че на всяка итерация се прилагат всички възможни правила и така се поражда следващия порядък. Т.е. Заместват се всички символи едновременно. ● Сама по себе си разписаната дума е символен низ, графичният смисъл се придава в последствие.
  • 10. L-System vs. CFDG ● L-systems се описват с граматики от по-общ вид, докато CFDG граматиките са контекстно свободни. ● Продуктът от Линдемаер системите е първо символен (едномерен), а в последствие придобива многомерен смисъл. ● Преди да е генериран символния низ, резултат от прилагането на L-system не може да за почне реалното изграждане на структурата ● Пространството, в което се развиват L-Systems е двуизмерна или триизмерна координатна система. ● За разлика от CFDG няма трансформационно пространство за всеки извод
  • 11. Пример – Cantor Dust ● Променливи : A B ( Порядък ) Резултат ● А - рисувай и се движи (1) А ● B - движи се без да рисуваш (2) ABA ● Аксиома : A (3) ABABBBABA ● Правила (4) ABABBBABABBBBBBBBBABABBBABA ● (A → ABA) ● (B → BBB) 1... 2... 3... 4... 5... 6... 7...
  • 12. Крива на Кох ● Променлива(и) : F n = 0: ● Константи : + − F ● + e ротация на 90' n = 1: ● - е ротация на -90' F+F-F-F+F n = 2: ● Аксиома : F F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F- означава движение и F+F рисуване напред с единица разстояние n = 3: ● Правило за извод : F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F-F+F+F+F-F- F+F+ F+F-F-F+F+F+F-F-F+F-F+F-F-F+F-F+F-F- (F → F+F−F−F+F) F+F+F+F-F-F+F- F+F-F-F+F+F+F-F-F+F-F+F-F-F+F- F+F-F-F+F+F+F-F-F+F- F+F-F-F+F+F+F-F-F+F-F+F-F- F+F-F+F-F-F+F+F+F-F-F+F+ F+F-F-F+F+F+F-F-F+F- F+F-F-F+F-F+F-F-F+F+F+F-F-F+F
  • 13. Формално описание на L-Systems ● Описва се движението на 'костенурката' в N- мерно пространство (най-често 2D). ● Например в двумерно пространство състоянието на костенурката се определя от тройката (x, y, a), където (x, y) са Картезиеви координати, а (a) е текущата ориентация ● Придава се конкретен смисъл на някои символи, които се разписват по- късно от L-System ● Задават се константи, напимер определящи стандартен ъгъл на завъртане, дължина на изрисуваната отсечка и т.н. ● В зависимост от вида на системата може да бъде въведен и символ за запазване на текущaта позиция на 'костенурката' и съответно с възможност за последващо възстановяване. ● Това позволява разписване на разклонения ● Крайният резултат ще може да има и множество “вложени” състияния ● Правилата за извод в L-Systems могат да бъдат и със стохастичен характер ● Позволява герериране на серии от подобни резултати ● Въвеждат елемент на случайност в един и същ резултат
  • 14. Формално описание на L-Systems Angle={COUNT} : задаване на ъгъла използван от '+' and '-' да е равен на 360 / {COUNT} градуса Axiom {COMMANDS} : начално множество от команди {COMMANDS} {COUNT}+ : завой вляво {COUNT} пъти. Ако {COUNT} липсва - 1 {COUNT}- : завой вдясно {COUNT} пъти. Ако {COUNT} липсва - 1 | : завой на 180 градуса или на най-големия възможен завой по-малък от 180 градуса f, d : рисуване на линия използвйаки текущата посока и дължина g, m : движение напред вместо рисуване {ANGLE} : завой вляво на {ANGLE} градуса / {ANGLE} : завой вдясно на {ANGLE} градуса [ : запазване на състоянието (позиция, ъгъл, размер и т.н.) ] : възстановяване на състоянието
  • 15. Формално описание на L-System ! : инвертиране смисъла на +, - и и / @{SCALE} : скалиране на дадената линия {SCALE} пъти @q{SCALE} : саклиране на степен квадратен корен от {SCALE} @I{SCALE} : скалиране с 1 / {SCALE} c{INDEX} : задаване на цветови индекс {INDEX} <{COUNT} : увеличаване на цветовия индекс с {COUNT} >{COUNT} : намаляване на цветовия индекс с {COUNT} {LETTER}={COMMANDS} : асоцииране на {COMMANDS} със символа {LETTER}
  • 16. Крива на КОХ като L-system Koch1 { ; адаптация на Adrian Mariano ; от книгата The Fractal Geometry of Nature ; от Беноа Маделброт Angle 6 Axiom F--F--F F = F+F--F+F } последователни генерации
  • 17. Модели на растения   аксиома: F    правило: F -> F[-F]F[+F][F] 1 2 3 4 5 Bush { ; Adrian Mariano Weed { Angle 16 Angle 50 Axiom ++++F Axiom +++++++++++++x F=FF-[-F+F+F]+[+F-F-F] x=f[@.5+++++++++x]-f[@.4-----------!x]@.6x } }
  • 18. Някои популярни криви представени с L-Systems Hilbert curve 32-segment curve F -> -F+F-F-F+F+FF-F+F+FF+F-F-FF+FF-FF+F+F-FF-F-F+FF-F-F+F+F-F+ L -> +RF-LFL-FR+, R -> -LF+RFR+FL- Peano-Gosper curve Square curve X -> X+YF++YF-FX—FXFX-YF+ Y -> -FX+YFYF++YF+FX—FX-Y 60° X -> XF-F+F-XF+F+XF-F+F-X
  • 19. Dragon Curve 3 1 2 4 X -> X+YF+ Y -> -FX-Y 5 6 8 7 9
  • 20. Визуализация на L-Systems ● С Context Free е по-сложно ● Няма възможност за извод при разписване на пътища ● Изрисуването става на всяка итерация на разписване на правила, а не само в последния порядък ● Със Structure Synth е възможно, защото има механизъм за ограничаване дълбочината на извода ● С помоща на FractInt ● С помоща на Fractal Science Kit ● Описаната система е типична за Fractal Science Kit ● Общоприет запис, който се използва и от други софтуерни пакети ● Ръчно – с наш собствен скрипт
  • 21. Библиография ● http://mathworld.wolfram.com/TruchetTiling.html - шарка на Труше ● http://www.biologie.uni-hamburg.de/b-online/e28_3/lsys.html - Обща информация за L-Systems ● en.wikipedia.org/wiki/L-system – още едно въведение за L-Systems ● http://www.nahee.com/spanky/www/fractint/lsys/tutor.html - мощното ръководство за L-Systems с множество примери ● http://algorithmicbotany.org/ - Визуални модели за морфогенезис
  • 22. Софтуер за L-Systems ● http://www.javaview.de/vgp/tutor/lsystem/PaLSystem.html - прост аплет за експерименти с L-Systems (Java) ● http://web.mit.edu/~eric_r/Public/lsystems/ - прост аплет за бързо моделиране на 3D L-Systems (Java/Processing) ● http://mathworld.wolfram.com/LindenmayerSystem.html - Детайли за някои популярни L-Systems ● http://www.generation5.org/content/2002/lse.asp - просто приложение за изследване на L-Systems ● http://www.fractalsciencekit.com/ - Fractal Science Kit ● http://www.nahee.com/spanky/www/fractint/fractint.html - официален сайт на FractInt. Текуща версия 20.0