Рекурсивное создание кубов

Описание проекта: Рекурсивное создание кубов

Цель проекта

Проект направлен на создание визуально привлекательной 3D-структуры, состоящей из рекурсивно уменьшающихся кубов. Используя рекурсивный подход, мы можем создать сложные и интересные формы, которые могут быть использованы в различных областях, таких как компьютерная графика, дизайн, архитектура и искусство.

Описание алгоритма

Проект реализован с помощью функции recursive_cube(size, depth), которая принимает два параметра:

  • size: массив, представляющий размеры куба по осям X, Y и Z.
  • depth: уровень рекурсии, определяющий, сколько раз функция будет вызываться.

Логика работы

  1. Базовый случай: Если depth меньше или равен 0, функция завершает выполнение, что предотвращает дальнейшую рекурсию.
  2. Создание куба: Если depth больше 0, функция создает куб заданного размера с помощью вызова cube(size).
  3. Трансляция: После создания куба, функция перемещает (транслирует) координаты для размещения следующего куба. Новые координаты рассчитываются с учетом уменьшения размера куба и смещения по осям X и Y.
  4. Рекурсивный вызов: Функция вызывает саму себя с уменьшенным размером куба (уменьшенным на 25%) и уменьшенной глубиной рекурсии (на 1).

Основной вызов

Функция recursive_cube вызывается с начальными параметрами:

  • Размер куба: [10, 10, 10]
  • Глубина рекурсии: 8

Это означает, что будет создана иерархия из 8 кубов, каждый из которых будет меньше предыдущего на 25%, создавая эффект "впадения" кубов друг в друга.

Применение

  • Искусство и дизайн: Проект может быть использован для создания уникальных художественных объектов или инсталляций.
  • Образование: Может служить учебным пособием по рекурсии и 3D-моделированию.
  • Визуализация данных: Рекурсивные структуры могут быть использованы для представления сложных данных в наглядной форме.

Заключение

Проект демонстрирует мощь рекурсивного программирования и его применение в 3D-моделировании. Создание рекурсивных кубов не только визуально привлекательно, но и служит отличным примером для изучения алгоритмов и структур данных.

module recursive_cube(size, depth) {
    if (depth > 0) {
        cube(size);
        translate([size[0] / 8, size[1] / 8, size[2]]) {
            recursive_cube(size * 0.75, depth - 1);
        }
    }
}

// Основной вызов рекурсивной функции
recursive_cube([10, 10, 10], 8);
3D вид:
Скачать stl файл