Построение фрактала "капуста Романеско" в 3d
Данный программный код создает трехмерный фрактал, используя рекурсивное расположение сфер по спирали Фибоначчи с применением золотого угла. Разберем алгоритм пошагово:
1. Инициализация базовых параметров
nbrSpheres = 80 - количество сфер на каждом уровне, baseRadius = 10 - начальный радиус основной сферы, levels = 3 - глубина рекурсии (количество уровней вложенности), goldenAngle - угол, рассчитанный на основе золотого сечения (~137.5°)
2. Принцип работы функции createFractal()
Рекурсивная логика:
Базовый случай: если достигнут 0 уровень или радиус < 0.3, рекурсия прекращается
Расчет параметров: Вычисляется площадь родительской сферы: lgArea = πr². Определяется средняя площадь для дочерних сфер: meanArea = lgArea/nbrSpheres. Задаются минимальная и максимальная площади с вариацией deviation
Генерация сфер. Расположение: Угол рассчитывается как i * goldenAngle (спираль Фибоначчи). Радиус спирали spiralRad увеличивается пропорционально накопленной площади. Глубина z зависит от уровня рекурсии (Math.pow(2, level) * ratio).
Размер сферы. Площадь дочерней сферы: smArea = map(ratio, minArea, maxArea)
Радиус: smRadius = √(smArea/π)
Рекурсивный вызов. Для каждой сферы вызывается createFractal() с параметрами: новый центр (x,y,z), радиус ×0.8, уровень level-1
3. Особенности алгоритма
Использование goldenAngle обеспечивает оптимальное заполнение пространства без перекрытий. Дает естественный, эстетичный вид фрактала. Площади сфер варьируются в диапазоне [minArea, maxArea]. Обеспечивает плавные переходы между уровнями. Компонента z добавляет глубину, создавая объемную структуру. Глубина усиливается с каждым уровнем (Math.pow(2, level)). Каждый следующий уровень имеет радиус ×0.8 от родительского. Создает классический фрактальный паттерн самоподобия