Построение полного фрактального дерева произвольной глубины с произвольным ветвлением:
CODE:' построение фрактального дерева Пифагора
ПЕРЕМЕННАЯ вилка
ПЕРЕМЕННАЯ уровень
ПЕРЕМЕННАЯ уровней
ПЕРЕМЕННАЯ длина_ветки
ПЕРЕМЕННАЯ угол_начальный
ПЕРЕМЕННАЯ угол_вилки
МАССИВ ветви[10] ' требуется [уровней-1]
ПЕРЕМЕННАЯ сжатие
уровней = 6 ' глубина построения дерева
вилка = 4 ' число новых ветвей на каждой развилке
угол_вилки = 30 ' угол между ветвями на развилке
угол_начальный = 45' отклонение первой ветви на развилке
длина_ветки = 200 ' базовая длина ветки
сжатие = 0.7 ' относительное укорачивание веток
ПОДНЯТЬ ПЕРО
МЕСТО 400, 600
ОПУСТИТЬ ПЕРО
ПЕРО уровней
ВПЕРЁД длина_ветки
ПОВТОРЯТЬ ПОКА уровень>=0
{
уровень = уровень+1
ЕСЛИ уровень=уровней ТО ' ветка последнего уровня
уровень = уровней-1
НАЗАД сжатие^уровень*длина_ветки
КОНЕЦ УСЛОВИЯ
ЕСЛИ ветви[уровень]<вилка ТО ' рисуем развилку
ЕСЛИ ветви[уровень]=0 ТО НАЛЕВО угол_начальный ИНАЧЕ НАПРАВО угол_вилки
ветви[уровень] = ветви[уровень]+1
ПЕРО уровней-уровень
ВПЕРЁД сжатие^уровень*длина_ветки
ИНАЧЕ ' возврат к предыдущей развилке
ветви[уровень] = 0
НАЛЕВО угол_вилки*(вилка-1)-угол_начальный
НАЗАД сжатие^(уровень-1)*длина_ветки
уровень = уровень-2
КОНЕЦ УСЛОВИЯ
}
СПРЯТАТЬ ЧЕРЕПАХУ
В целом и так фрактальный алгоритм без рекурсии выглядит неуклюже... а ещё не получилось красиво собрать условия "возврат к предыдущей развилке" и "ветка последнего уровня". Удивляет приоритет степени равный умножению. Но результат симпатичный.(Отредактировано автором: 05 Января, 2014 - 19:29:18) |