Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Grammars for Generative Art - Lectures @ Sofia University #6
1. Граматики за
генеративно изкуство
● Шарка на Труше
● L – системи
● Идея
● Описание
● Демонстрации
● Софтуер
Подготвени от Г.Пенков като част от курса на ФМИ за зимен семестър 2010/2011. Заглавното
изображение адаптирано от оригиналната граматика от http://contextfree.lazymoon.org.
2. Шарка на Труше
● Себастиен Труше е френски монах от Доминиканския
орден, живял през 17/18в.
● Известен с постиженията си в областта на
хидравликата, графиката, математиката и типографията
● През 1704 разглежда всички възможни форми, които се
получават от подредбата на правоъгълни триъгълници
разположени в четерите края на квадрат.
3. Разновидности
● При замяна на шартката с други основни
форми се получават интересни резултати:
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