ГоловнаСтаттіФрактальна Дерево

Фрактальне Дерево: Рекурсія, Розгалуження та Золотий Кут

Вирощуйте дерево з однієї рекурсивної умови — глибина, співвідношення та розмах — і подивіться, як золотий кут та системи Л пояснюють, чому справжні рослини гілкуються так, як вони ростуть.

mysimulator teamОновлено — червень 2026≈ 6 хв читання▶ Відкрити симуляцію

Дерево — це правило, застосоване до самого себе

Фрактальне дерево будується на основі однієї ідеї, яка повторюється: намалюйте гілку, потім намалюйте дві (або більше) менших гілки від її кінця, кожна повернута під певним кутом, а потім повторіть цей самий крок для кожної з цих нових гілок. Це рекурсія — функція, яка викликає сама себе з меншою версією проблеми — і це дуже добре відповідає тому, як справді ростуть рослини, оскільки зростаючий пагін не знає та не піклується про те, скільки попередніх поколінь гілок було створено. Він просто дотримується того ж місцевого правила росту, яке дотримувалася його батьківська гілка.

функція branch(довжина, кут): намалюйте лінію цієї довжини під цим кутом якщо довжина > мінімум: branch(довжина * коефіцієнт, кут - розмах) // ліве дитище branch(довжина * коефіцієнт, кут + розмах) • LIVE демо · рекурсивне розгалужене дерево, коливається на вітрі Кожен виклик branch() зменшує довжину на фіксований коефіцієнт (зазвичай близько 0,6 до 0,75) і обертається під кут розмаху перед тим, як породити своїх власних дітей. Три числа — глибина, коефіцієнт та розмах — контролюють весь силует: невелика глибина дає рідкісне паросток, висока глибина дає щільний, листяний верхівку; широкий розмах дає широку, пузату форму, вузький розмах дає високу, стовбупову форму. Цей тип самореферентного правила для генерації розгалужених структур формально називається L-системою (Lindenmayer system), названої на честь біолога Арістида Ліндемайера, який представив їх у 1968 році спеціально для моделювання того, як ростуть водорості та рослини клітин за клітиною.

function branch(length, angle):
    draw a line of this length at this angle
    if length > minimum:
        branch(length * ratio, angle - spread)   // left child
        branch(length * ratio, angle + spread)   // right child
жива демонстрація · пов'язана симуляція● LIVE

Чому рослини насправді розгалужуються

Реальні дерева не буквально запускають рекурсивну функцію, але подібність не випадкова. Зростаючий верхівковий ріст (мерізм) реагує на ті ж самі локальні сигнали, незалежно від того, скільки попередніх генерацій розгалужень було у нього – доступне світло, гравітація та хімічні гормони росту, відомі як ауксини — і не має способу знати загальну форму дерева чи його історію. Оскільки кожна верхівка дотримується того ж локального правила, виникаючий цілий об’єкт стає самоподібним: окремий гілочка статистично нагадує мініатюрну версію всього дерева. Це точно рекурсивна, масштабна властивість, яку називають фракталом математиками.

Золотий кут зустрічається в природі, не лише у коді

Багато реальних рослин розміщують листя, насіння або гілки відносно основи за допомогою дуже специфічного повороту: золотий кут, приблизно 137.5°, який випливає з золотого відношення φ ≈ 1.618. Поворот на цей точний нераціональний кут на кожному новому розвитку є найефективнішим способом пакування листя навколо основи без надмірного перекриття попереднього, що пояснює його повторне виникнення незалежно у несхожих рослинних родинах — соняшникові зерна, луски ялинової кори та спіральне розташування листків на багатьох стеблах (галузь науки, яка називається філотаксисом). Це вражаючий випадок того, що одна проста рекурсивна правило обертання з'являється знову і знову в природі, оскільки воно випадково добре вирішує реальну проблему пакування.

golden angle  =  360° × (1 − 1/φ)  ≈  137.507764°
where φ (phi) = (1 + √5) / 2 ≈ 1.618033989

Додавання вітру: перетворення статичного фракталу на симуляцію

Однорідне рекурсивне дерево є статичною геометрією. Щоб змусити його коливатися, симуляція на цій сторінці спотворює параметр кута на кожному рівні передуванням за допомогою гладко періодичної функції (зв'язані синусоїдні хвилі різних частот, іноді відомі як процедурна шум), з амплітудою спотворення, зменшеною до стовбура та збільшеною до кінчиків — що імітує те, як рух тонкого стовбура майже не відчувається, тоді як тонкі зовнішні гілки коливаються на вітрі. Оскільки рух кожного гілки обчислюється відносно позиції батьківського рівня, малі коливання в основі складають значно більшу, більш хаотичну видимість на кінчиках гілок, так само як ручка верхівки гадюки рухається плавно, тоді як її кінець розривається.

Frequently asked questions

Що відбувається, якщо збільшити глибину рекурсії занадто сильно?

Дерево стає експоненційно більш деталізованим і повільнішим у відображенні, оскільки кількість гілок приблизно подвоюється з кожним додатковим рівнем глибини (для простого правила двох нащадків). Після певної глибини гілки також стають коротшими за один піксель, додаючи візуальну щільність без додавання нової реальної інформації.

Чому деякі фрактальні дерева виглядають більш реалістично, ніж інші?

Реалізм в основному залежить від зміни співвідношення, розповсюдження та навіть кількості дочірніх гілок незначною мірою на кожному поділі, а не використання ідентичних значень всюди. Реальні рослини мають нерівномірності через нерівномірне освітлення, пошкодження та генетику, тому невелика випадковість у кожній параметрі значно сприяє уникненню очевидно синтетичного, ідеально симетричного вигляду.

Чи є золотий кут єдиним кутом розміщення, який використовують рослини?

Ні, але він особливо поширений, оскільки це ірраціональний кут, який найважче наближати простим дрібком, що мінімізує точний перекриття між послідовними листками або насінням, коли вони спіраються зовні. Деякі рослини використовують інші, простіші кутові розміщення, особливо коли листки не додаються безперервно, а у вигляді суцвітт або пар.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте Fractal Tree і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію Fractal Tree

Що ви знайшли?

Додати кроки відтворення (опційно)