'F'% крок вперед = [cos (alpha); sin (alpha)]; = R/(2 ^ Lmax); = cat (2, p, Tmp);
end; Rule (i) == '+'% збільшення кута, що задає напрямок руху = alpha + teta;; Rule (i) == '-'% зменшення кута, що задає напрямок руху p>
alpha = alpha-teta;;; = p; z = DraconString (Lmax, Axiom, Newf, Newx, Newy, n, tmp);
% функція, що повертає L-систему = 1;
if n <= Lmaxn == 1 = Axiom;; = length (tmp); = ''; i = l: Mtmp (i) == 'X' tmpl = streat (tmpl, Newx ); end; tmp (i) == 'Y' tmpl = streat (tmpl, Newy); end; not (tmp (i) == 'F') & not (tmp (i) == 'X') & not (tmp (i) == 'Y') tmpl = strcat (tmpl, tmp (i)); end; = tmpl; n = n + l; tmp = DraconString (Lmax, Axiom, Newf, Newx, Newy , n, tmp);
end;; = tmp;
2.2.2 Зображення дракона Хартера-Хайтвея
В
Рисунок 20 - Дракон Хартера - Хайтвея 12 порядку
.2.3 Зображення кривої Гільберта
Замінюючи в описаній вище програмі породжують правила, можна отримати і інші фрактальні криві, наприклад, криву Гільберта. Аксіома: X
Породжуючі правила:
= F =-YF + XFX + FY - = + XF-YFY - FX +
? = 0,? =? /2
В
Рисунок 21 - Крива Гільберта 4 порядку
2.2.4 Зображення кривої Госпер
Аксіома: XF
Породжуючі правила:
= X + YF + + YF? FX? ? FXFX? YF + =? FX + YFYF + + YF + FX? ? FX? Y д
? = 0,? =? /3
В
Малюнок 22 - Крива Госпер 3 порядку
.2.5 Зображення кривої Серпінського
Аксіома: F + XF + F + XF
Породжуючі правила:
= F = XF? F + F? XF + F + XF? F + F? X = ''
? =? 4,? =?/2. br/>В
Малюнок 23 - Крива Серпінського 3 порядку
.3 Галуження
Коли в L-системі зустрічається символ [(відкрити гілка), необхідно запам'ятати координати точки знаходження "черепашки" і напрямок її руху, тобто змінні (x, y ,?). До збереженим змінним слід повернутися після виявлення символу] (закрити гілка). Для зберігання триплетів (x, y ,?) в [6] пропонується використовувати стек:
В
в кінець якого записуються нові дані. При закритті гілки змінним (x, y ,?) присвоюються значення, лічені з кінця стека, потім ці...