SlideShare a Scribd company logo
Граматики за
                генеративно изкуство

●   Шарка на Труше

●   L – системи

    ●   Идея

    ●   Описание

    ●   Демонстрации

    ●   Софтуер


Подготвени от Г.Пенков като част от курса на ФМИ за зимен семестър 2010/2011. Заглавното
изображение адаптирано от оригиналната граматика от http://contextfree.lazymoon.org.
Шарка на Труше
●   Себастиен Труше е френски монах от Доминиканския
    орден, живял през 17/18в.
●   Известен с постиженията си в областта на
    хидравликата, графиката, математиката и типографията
●   През 1704 разглежда всички възможни форми, които се
    получават от подредбата на правоъгълни триъгълници
    разположени в четерите края на квадрат.
Разновидности
●   При замяна на шартката с други основни
    форми се получават интересни резултати:
Разновидности...
?
От галерията на Contexfree.org




                        Eco by Aihle
        http://www.contextfreeart.org/gallery/view.php?id=1937
От галерията на 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
Линдемаер системи
●   Разработени от биолога Аристид Линденмаер
●   Пъвоначално създадени за моделиране растежа
    на водорасли и други растения
●   Използвали са се за илюстриране отношенията м/у
    съседните клетки
●   В последствие се превръщат в стандартен метод
    за описание на сложни структури с разклонения
●   Рекурсивната натура на L-system ги прави
    подходящи за описание на фрактали
●   Намират разнообразно приложение при
    създаването на генеративни структури
L-Systems
●   Описват се от множеството:

                                        G = (V, ω , Σ)

●   ...където
    ●   V е множество от символи, всеки от който може да има извод (да бъде разписан в
        друг)
    ●   ω е аксиома
    ●   Σ – множество от правила за извод
●   Нарича се още Semi-Thue граматика, еквивалент на граматика от Тип 0 (общ
    тип)
●   Обикновено се смята, че са от някакъв порядък
●   Разликата с другите граматики от формализма на Чомски е, че на всяка
    итерация се прилагат всички възможни правила и така се поражда
    следващия порядък. Т.е. Заместват се всички символи едновременно.
●   Сама по себе си разписаната дума е символен низ, графичният смисъл се
    придава в последствие.
L-System vs. CFDG
●   L-systems се описват с граматики от по-общ вид, докато
    CFDG граматиките са контекстно свободни.
●   Продуктът от Линдемаер системите е първо символен
    (едномерен), а в последствие придобива многомерен
    смисъл.
●   Преди да е генериран символния низ, резултат от
    прилагането на L-system не може да за почне реалното
    изграждане на структурата
●   Пространството, в което се развиват L-Systems е
    двуизмерна или триизмерна координатна система.
●   За разлика от CFDG няма трансформационно
    пространство за всеки извод
Пример – Cantor Dust
   ●   Променливи : A B                  ( Порядък ) Резултат
       ●   А - рисувай и се движи
                                         (1) А
       ●   B - движи се без да рисуваш
                                         (2) ABA
   ●   Аксиома : A
                                         (3) ABABBBABA
   ●   Правила
                                         (4) ABABBBABABBBBBBBBBABABBBABA
       ●   (A → ABA)
       ●   (B → BBB)

1...
2...
3...
4...
5...
6...
7...
Крива на Кох
●   Променлива(и) : 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
Формално описание на L-Systems
●   Описва се движението на 'костенурката' в N- мерно пространство (най-често
    2D).
    ●   Например в двумерно пространство състоянието на костенурката се определя от
        тройката (x, y, a), където (x, y) са Картезиеви координати, а (a) е текущата
        ориентация
●   Придава се конкретен смисъл на някои символи, които се разписват по-
    късно от L-System
●   Задават се константи, напимер определящи стандартен ъгъл на завъртане,
    дължина на изрисуваната отсечка и т.н.
●   В зависимост от вида на системата може да бъде въведен и символ за
    запазване на текущaта позиция на 'костенурката' и съответно с възможност
    за последващо възстановяване.
    ●   Това позволява разписване на разклонения
    ●   Крайният резултат ще може да има и множество “вложени” състияния
●   Правилата за извод в L-Systems могат да бъдат и със стохастичен характер
    ●   Позволява герериране на серии от подобни резултати
    ●   Въвеждат елемент на случайност в един и същ резултат
Формално описание на 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} градуса

[      : запазване на състоянието (позиция, ъгъл, размер и т.н.)
]      : възстановяване на състоянието
Формално описание на L-System

!    : инвертиране смисъла на +, - и  и /
 @{SCALE} : скалиране на дадената линия {SCALE} пъти
 @q{SCALE} : саклиране на степен квадратен корен от
{SCALE}
 @I{SCALE} : скалиране с 1 / {SCALE}
c{INDEX} : задаване на цветови индекс {INDEX}
<{COUNT} : увеличаване на цветовия индекс с {COUNT}
>{COUNT} : намаляване на цветовия индекс с {COUNT}
 {LETTER}={COMMANDS} : асоцииране на {COMMANDS} със
символа {LETTER}
Крива на КОХ като L-system
Koch1 {
; адаптация на Adrian Mariano
; от книгата The Fractal Geometry of Nature
; от Беноа Маделброт

     Angle 6
     Axiom F--F--F
     F = F+F--F+F
 }




                                              последователни генерации
Модели на растения


   аксиома: 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
  }                                    }
Някои популярни криви
                 представени с 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
Dragon Curve
                                      3
             1            2




                      4
X -> X+YF+
Y -> -FX-Y                        5

                                      6




                              8
                  7                       9
Визуализация на L-Systems
●   С Context Free е по-сложно
    ●   Няма възможност за извод при разписване на пътища
    ●   Изрисуването става на всяка итерация на разписване на
        правила, а не само в последния порядък
●   Със Structure Synth е възможно, защото има механизъм
    за ограничаване дълбочината на извода
●   С помоща на FractInt
●   С помоща на Fractal Science Kit
    ●   Описаната система е типична за Fractal Science Kit
    ●   Общоприет запис, който се използва и от други софтуерни
        пакети
●   Ръчно – с наш собствен скрипт
Библиография
●   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/ - Визуални модели за морфогенезис
Софтуер за 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

More Related Content

PDF
Grammers for Generative Art - Lectures @ Sofia University #4
ODP
K.Merachev G.Penkov Intro To Context Free Art
PDF
Grammars for Generative Art - Lectures @ Sofia University #9
PDF
Grammars for Generative Art - Lectures @ Sofia University #8
PDF
Grammars for Generative Art - Lectures @ Sofia University #3
PDF
Grammars for Generative Art - Lectures @ Sofia University #0
PPT
Line Fun
PDF
Grammars for Generative Art - Lectures @ Sofia University #5
Grammers for Generative Art - Lectures @ Sofia University #4
K.Merachev G.Penkov Intro To Context Free Art
Grammars for Generative Art - Lectures @ Sofia University #9
Grammars for Generative Art - Lectures @ Sofia University #8
Grammars for Generative Art - Lectures @ Sofia University #3
Grammars for Generative Art - Lectures @ Sofia University #0
Line Fun
Grammars for Generative Art - Lectures @ Sofia University #5
Ad

Grammars for Generative Art - Lectures @ Sofia University #6

  • 1. Граматики за генеративно изкуство ● Шарка на Труше ● L – системи ● Идея ● Описание ● Демонстрации ● Софтуер Подготвени от Г.Пенков като част от курса на ФМИ за зимен семестър 2010/2011. Заглавното изображение адаптирано от оригиналната граматика от http://contextfree.lazymoon.org.
  • 2. Шарка на Труше ● Себастиен Труше е френски монах от Доминиканския орден, живял през 17/18в. ● Известен с постиженията си в областта на хидравликата, графиката, математиката и типографията ● През 1704 разглежда всички възможни форми, които се получават от подредбата на правоъгълни триъгълници разположени в четерите края на квадрат.
  • 3. Разновидности ● При замяна на шартката с други основни форми се получават интересни резултати:
  • 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