🌳 Фрактальне дерево
Самоподібність у природі — дерево, де кожна гілка схожа на ціле дерево. Рухай мишею, щоб гнути!
Самоподібність у природі — дерево, де кожна гілка схожа на ціле дерево. Рухай мишею, щоб гнути!
Ця симуляція вирощує фрактальне дерево у справжньому 3D за допомогою WebGL-рендерера Three.js. Стовбур розгалужується на 2–3 дочірні гілки, кожна з яких розгалужується знову, повторюючись до обраної глибини або поки не вичерпається бюджет сегментів. Кожна дочірня гілка нахилена на кут гілки та прокручена навколо батьківської осі, а її довжина й радіус масштабовані фіксованим коефіцієнтом, тож уся фігура самоподібна — кожна під-гілка є мініатюрою цілого дерева.
Повзунки задають глибину рекурсії, кут гілки, відношення довжини, кількість гілок на вузол та товщину стовбура, тоді як колір інтерполюється за глибиною — від коричневого стовбура до зелених кінчиків. Кнопка Рандом перемішує параметри, Скинути повертає типові значення, а Автообертання обертає сцену. Таке розгалуження у стилі L-системи моделює реальний ріст у деревах, річкових мережах, кровоносних судинах та легенях.
Що таке фрактальне дерево?
Фрактальне дерево — це форма, побудована шляхом повторного розщеплення кожної гілки на менші гілки під фіксованим кутом та з фіксованим відношенням довжини. Результат самоподібний: збільште будь-яку гілку, і вона нагадуватиме ціле дерево. Ця сторінка генерує таке дерево у справжньому 3D за допомогою рекурсивної функції та Three.js.
Як насправді працює рекурсія?
Функція addBranch будує один циліндр-сегмент, а потім викликає себе для кожної дочірньої гілки — повертаючи її на кут гілки та прокручуючи навколо батьківської осі. Кожен виклик скорочує гілку на відношення довжини та збільшує лічильник глибини на одиницю. Рекурсія зупиняється, коли досягнуто обраної глибини або вичерпано бюджет сегментів.
Що роблять повзунки глибини й кута?
Глибина (3–11) задає, скільки разів гілки розщеплюються, тож більші значення дають повніше, детальніше дерево. Кут гілки (10–70°) керує тим, наскільки широко розходиться кожне відгалуження від батьківської гілки.
Відношення (0.50–0.82) — це частка, на яку кожна дочірня гілка скорочується відносно батьківської. Низьке відношення змушує гілки швидко зменшуватися у компактне дерево, тоді як високе відношення дає довгі, розлогі гілки, що заповнюють набагато більше простору.
Бо воно самоподібне через масштаби: правило побудови однакове на кожному рівні, тож кожна гілка є масштабованою копією батьківської та зрештою цілого дерева. У математичному ідеалі нескінченної глибини воно мало б дробову (нецілу) розмірність; тут глибина обмежена для скінченного, відмальовуваного наближення.
Автообертання вмикає неперервне обертання сцени навколо дерева, щоб ви могли роздивитися 3D-структуру з усіх боків без перетягування мишею. Її можна вимкнути прапорцем, після чого ви керуєте видом самостійно — тягніть, щоб обертати, та прокручуйте, щоб масштабувати.
Перетягуйте мишею (або пальцем), щоб орбітально обертати камеру навколо дерева, та прокручуйте колесо, щоб наближати або віддаляти. Це OrbitControls від Three.js, тож ви можете оглянути крону з будь-якого кута, що допомагає побачити, як гілки розгортаються у просторі, а не лежать пласко.
Колір кожної гілки інтерполюється за її глибиною — від коричневого стовбура до зелених листяних кінчиків. Коли гілка досягає останнього рівня, на її вершині малюються маленькі точки, що нагадують листя або бруньки, зеленого відтінку.
Вона вловлює ключовий принцип, що біологічне розгалуження рекурсивне й самоподібне, через що справжні дерева, папороті, легені та річкові дельти мають фрактальну структуру. Проте це ідеалізація: справжні кути, довжини та товщини гілок змінюються залежно від світла, гравітації та генетики, тоді як тут кожне розгалуження використовує однакові фіксовані правила.
Фрактальне розгалуження та L-системи використовують для генерування реалістичних рослин і дерев в іграх, фільмах та архітектурі, а також для моделювання мереж, що мають ефективно заповнювати простір — таких як бронхи в легенях, кровоносні судини, нейрони, шляхи блискавок та річкові системи. Вивчення цих візерунків допомагає біологам та інженерам зрозуміти ефективний розподіл і ріст.