🌿 Фрактали Л-системи
Системи Ліндемаєра · Черепашяча графіка · Фрактальні рослини та криві
Системи Ліндемаєра · Черепашяча графіка · Фрактальні рослини та криві
Ця симуляція генерує фрактальні рослини, сніжинки та просторово-заповнювальні криві за допомогою системи Ліндемаєра (Л-системи): формальної граматики, яка переписує початковий рядок, аксіому, одночасно замінюючи кожен символ правою частиною його правила підстановки. Після обраної кількості ітерацій довгий вихідний рядок зчитується інтерпретатором черепашячої графіки, де кожен символ — це команда малювання, що породжує самоподібну геометрію лише з кількох простих правил.
Ви задаєте аксіому, редагуєте одне чи кілька правил підстановки (F → FF+[…]) та налаштовуєте кількість ітерацій (1–9) і кут повороту (5°–90°). Черепашка читає F, G, A та B як «малювати вперед», + і − як поворот ліворуч/праворуч на кут, а [ та ] для збереження й відновлення позиції та напрямку для розгалуження. Вбудовані пресети включають сніжинку Коха, криву дракона, трикутник Серпінського, криву Гільберта та папороть Барнслі. Л-системи лежать в основі процедурної рослинності в іграх, фільмах та ботанічному моделюванні.
Що таке Л-система?
Л-система, або система Ліндемаєра, — це паралельна граматика переписування рядків, винайдена ботаніком Арістідом Ліндемаєром у 1968 році для моделювання росту рослин. Ви починаєте з аксіоми та багаторазово замінюєте кожен символ одразу за допомогою правил підстановки. Отриманий рядок потім малюється як геометрія, утворюючи складні, самоподібні фрактальні форми.
Як працює інтерпретатор черепашячої графіки?
Віртуальна «черепашка» проходить кінцевий рядок по одному символу за раз. F, G, A та B рухають її вперед, малюючи відрізок лінії, + повертає її ліворуч на заданий кут, а − повертає праворуч. Квадратні дужки [ та ] зберігають і відновлюють позицію та напрямок черепашки, що й створює гілки.
Що роблять повзунки Ітерації та Кут?
Ітерації (від 1 до 9) задають, скільки разів застосовуються правила переписування, тож вищі значення дають набагато більше деталей, але експоненційно довші рядки. Кут (від 5° до 90°) — це величина повороту черепашки на кожну команду + чи −. Невеликі зміни кута можуть кардинально змінити розкид рослини або форму кривої.
Це означає: щоразу, коли з'являється символ F, замінити його послідовністю FF+[−F]. Усі символи F підставляються одночасно за один прохід, потім наступна ітерація підставляє знову. Символи без правила, такі як + чи [, лишаються незмінними, діючи як фіксовані команди черепашки, а не як змінні, що переписуються.
Тому що переписування експоненційне. Якщо правило замінює один символ кількома, рядок приблизно множиться в довжині щопроходу, тож дев'ять ітерацій можуть сягати сотень тисяч символів. Ця симуляція містить запобіжний ліміт, який зупиняє розширення, щойно рядок перевищує 500 000 символів, аби браузер лишався чутливим.
Вона починається з аксіоми F--F--F, рівностороннього трикутника, з єдиним правилом F → F+F--F+F та кутом 60°. Кожен відрізок замінюється меншим зигзагоподібним виступом, тож периметр зростає безмежно, тоді як охоплена площа лишається скінченною — характерний фрактальний парадокс.
Це радше математичні ідеалізації, ніж точна ботаніка, але Л-системи напрочуд добре передають логіку розгалуження справжніх рослин. Ліндемаєр розробив їх саме для опису поділу клітин і росту пагонів, а пресети на кшталт папороті Барнслі показують, наскільки переконливо природна форма листка виникає лише з двох правил підстановки.
Трикутник Серпінського має фрактальну розмірність log3/log2, приблизно 1,585. Це нецілочислове значення означає, що він більше за лінію, але менше за заповнену площину: коли ви наближаєтеся, ті самі трикутні отвори повторюються на кожному масштабі, що є визначальною властивістю самоподібного фрактала.
Інтерпретатор записує глибину стека кожного сегмента, тобто скільки відкритих дужок його оточує. Рендерер зіставляє цю глибину з непрозорістю лінії, тож глибші, тонші гілочки виглядають яскравішими на темному тлі. Це створює відчуття тривимірної шаруватості, навіть попри те, що малюнок суто двовимірний.
Вони керують процедурною генерацією дерев, папоротей, трави та коралів у відеоіграх і комп'ютерних фільмах, а також використовуються в ботанічних дослідженнях для симуляції росту. Просторово-заповнювальні варіанти, такі як крива Гільберта, також з'являються в обробці зображень, стисненні даних та просторовому індексуванні баз даних.