fy"> endRule (i) == '+'% збільшення кута, що задає напрямок руху
alpha = alpha + teta;
end
if Rule (i) == '-'% зменшення кута, що задає напрямок руху
alpha = alpha-teta; = p;
2.1.3 Зображення сніжинки Коха
В
Малюнок 19 - Снежа нка Коха 4 порядку
.2 Дракон Хартера-Хайтвея
Однак при побудові інших фракталів, наприклад, дракона Хартера-Хайтвея (малюнок 20), на деяких кроках виникає необхідність у зміні напрямку читання правила (не зліва направо, а справа наліво). Для вирішення даної проблеми вводять дві додаткові команди, що позначаються X і Y, які використовуються для створення відповідної L-системи, але ігноруються "черепашкою" при переміщенні. При використанні цих команд породжує правило для дракона має вигляд:
Аксіома: FX
Породжуючі правила: = FX
Newx = X + YF + =? FX? Y
Відповідно з даними правилами L-система має наступний вигляд:
крок: FX + YF +
крок: FX + YF + +? FX? YF +
крок: FX + YF + +? FX? YF + +? FX + YF +?? FX? YF +
крок:
FX + YF + +? FX? YF + +? FX + YF +?? FX? YF + +? FX + YF + +? FX? YF +?? FX + YF +?? FX? YF +
Нижче наводиться лістинг файлу Dracon.m, що містить опис функції, що повертає зображення дракона, відповідно до описаної вище L-системою.
.2.1 Код програми "Dracon.m"
function [X, Y] = Dracon (Lmax)
% функція, що повертає зображення дракона
% Lmax - порЯядок дракона
% породжують правила = 'FX'; = 'F';
Newx = 'X + YF +'; = '-FX-Y'; = pi/2; alpha = 0; p = [0, 0]; = Coord (Lmax, Axiom, Newf, Newx, Newy, alpha, teta);
% звернення до функції, що повертає координати кутових точок дракона = size (p, 2); = p (1:1,1: M);
% створення вектора, що містить Х-е координати кутових точок дракона = p (2:2,1: M);
% створення вектора, що містить Y-е координати кутових точок дракона
plot (X, Y, 'Color', 'k'); (gca, 'xtick', 'уtick', []); (gca, 'XColor', 'w', ' YColor ',' w '); z = Coord (p, Lmax, Axiom, Newf, Newx, Newy, alpha, teta)
% функція, що повертає координати кутових точок дракона
Rule = DraconString (Lmax, Axiom, Newf, Newx, Newy, 1, '');% завдання L-системи = length (Rule) i = l: M = p (1:2, size (p, 2): size (p, 2)); Rule (i) == ...