Папороть Барнслі та гра хаосу
Папороть Барнслі, опублікована математиком Майклом Барнслі у 1988 році, є демонстрацією того, що складну, природно виглядаючу форму можна закодувати в невеликій кількості чисел. Це ітеративна функціональна система (IFS): набір афінних трансформацій – кожна з яких є комбінацією масштабування, обертання та переміщення – застосовується повторно до однієї точки, з одним трансформом обраним випадковим чином на кожному кроці відповідно до фіксованої ймовірності.
each transform: x' = a*x + b*y + e
y' = c*x + d*y + f
f1 (1% chance) -- stem: maps everything to a thin vertical line
f2 (85% chance) -- successive leaflets: main self-similar copy, slightly shrunk & rotated
f3 (7% chance) -- largest left leaflet
f4 (7% chance) -- largest right leaflet
Гра Каоса
Запуск IFS таким чином називається Граю Каосу: можна починати будь-де (початкова точка підходить чудово), потім повторювати це безперервно – випадково обирати один із чотирьох перетворень, використовуючи його призначену ймовірність, застосовувати його до поточної точки для отримання нової точки, малювати її та повторювати від нової точки. Кожен окремий крок виглядає як шум; точка непередбачувано стрибає навколо площини. Але після кількох тисяч ітерацій з цієї плутанини виростає вражаюче точна папороть. Це визначальна особливість Гри Каосу: випадковість у виборі правила, але детермінованість геометрії, до якої воно збігається. Атрактор IFS – це фіквована форма, на яку малюється орбіта – не залежить від початкової точки або від точного послідовності випадкових виборів, лише від чотирьох перетворень та їхніх відносних масштабів.
Чому ймовірності зважені, а не рівні
Розподіл 1/85/7/7 може здатися випадковим, але він обрано навмисно, щоб відповідати площі, яку кожна трансформація відображає відносно всього папороті. f2 (самоподібна карта генерації листків) покриває набагато більшу частку площі папороті, тому її потрібно обирати значно частіше за f1, яка лише коли-небудь малює тонкий стебель, інакше стебель був би намальований тисячами разів щільніше, ніж він повинен бути відносно листків, і рендеринг щільності не відображав би природну форму. Формально, зважування ймовірності кожної трансформації (приблизно) детермінантою її лінійної частини – її коефіцієнтом масштабування площі – це те, що робить щільність точок сходитися до природного незмінного виміру папороті замість випадково спотвореного.
Самоподібність: чому це схоже на папороть
Трансформація f2 є причиною того, що форма нагадує справжній лист папороті: застосування цієї трансформації відображає всю папороть на один із її власних піхви, трохи менший і повернутий. Оскільки ця піхва сама по собі є масштабованою копією всієї папороті, а вона в свою чергу будується з власних менших піхвоподібних копій, структура повторюється на кожному рівні – визначальна властивість фракталу. Справжні папороті демонструють ехо цієї властивості, оскільки їхнє зростання також регулюється повторним, самоподібним правилом відгалуження на рівні росту меристема, хоча біологічне зростання додає обмежень (світло, поживні речовини, гравітація), які ідеалізований IFS не враховує; математична папороть – це карикатура на процес зростання, а не буквальна модель його.
Рендеринг: чому мільйони точок замість одного великого проходу
Кожна ітерація обчислюється лише одним множенням матриці на вектор та одним випадковим вибором, тому сучасний браузер може малювати сотні тисяч точок на секунду. Деталізація покращується лише завдяки тривалому виконанню – немає окремого етапу уточнення, жодної сітки, жодної глибини рекурсії, яку потрібно враховувати, оскільки весь фрактал визначений неявно за допомогою довгострокових статистик випадкової орбіти, а не шляхом явного рекурсивного побудови. Це також пояснює, чому IFS-рендеринг є по-справжньому іншою алгоритмічною особою порівняно з методом фарбування за часом виходу для множини Мандельброта: там кожен піксель перевіряється незалежно проти фіксованої кількості ітерацій; тут одна й та сама траєкторія малює кожен піксель по черзі, і зображення лише збігається, коли історія цієї траєкторії накопичується.
Frequently asked questions
Чому папороть завжди виростає однаковою формою незалежно від того, звідки починається точка?
Чотири афінні трансформації є стисненнями – кожна з них зменшує відстані. Тому, незалежно від того, наскільки далеко розділені дві початкові точки, застосування одного випадкового набору трансформацій до обох робить їх більш-менш схожими. Довгостроковий набір відвіданих точок (атактор) визначається лише трансформаціями та їхніми ймовірностями, а не початковою точкою.
Чому ймовірності 1%, 85%, 7%, 7% замість рівних 25% кожна?
Ймовірності встановлені приблизно пропорційно тому, яку площу кожна трансформація покриває в цілому по папйонці. Трансформація малювання стебла покриває мізерний шматочок площі і тому вибирається рідко (1%), а основна трансформация генерації листків покриває більшість площі папоні та вибирається 85% часу, що підтримує візуальну пропорційність щільності точок, накладених на папйонку, реальній структурі.
Чи є папороть Барсело – модель того, як справді ростуть папоротники?
Лише в слабкій мірі – вона захоплює ідею про те, що листкова розгалужена частина папороті будується з менших самосхожих копій себе, що є реальною особливістю росту рослин, але ігнорує всі біологічні обмеження, такі як реакція на світло, доступність поживних речовин та гравітропізм, які формують справжній ростучий папорочник. Її найкраще розуміти як мінімальне математичне зображення самосхожості, а не як ботанічну модель росту.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте Barnsley Fern і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію Barnsley Fern