продолжение^

20 Ф. Хилл

Приближение к бесконечности

Листинг 9.11 (продолжение)

rotate(90):

drawTrio(depth); // Draw А // рисуем А

translate(8.8):
rotate(180);

drawTrio(depth): // Draw D // рисуем D

restoreCK ) : // restore the original CT // восстанавливаем исходное значение CT }

Код подпрограммы drawTrioO приведен в листинге 9.11. Нужная максимальная глубина рекурсии контролируется путем передачи глубины depth в drawTrioO в качестве параметра и сравнения ее с глобальной переменной maxdepth; каждый потомок имеет глубину на единицу большую, чем его родитель. Начальный вызов подпрограммы имеет вид: drawTrio(l). Что же касается эффективности, то масштабирование scale(0.5. 0.5) вызывается только один раз, а не для каждого потомка. Таким образом, количество вызовов масштабирования будет в два раза меньше, чем можно было ожидать. Тщательно следите за изменениями систем координат во время различных вызовов подпрограмм.

Напишите и выполните приложение, которое рисует рептилии вышеописанным способом. Сделайте так, чтобы это приложение могло нарисовать все рептилии, изображенные на рис. 9.23. Кроме того, оно должно уметь рисовать интересные рептилии из практического упражнения 9.4.6, а также ковер Серпинского.

Необязательные дополнения. 1. Расширьте свое приложение так, чтобы оно закрашивало полигоны «потомков» самого нижнего уровня узором [Clason, 42]. Поэкспериментируйте с каждым из узоров, приведенных на рис. 9.53, и нарисуйте эти узоры до глубины 4 или более.

Закрашивание областей рептилий

Рис. 9.53. Закрашивание областей рептилий

2. Измените программу рисования рептилий так, чтобы она могла рисовать линии, подобные изображенным на рис. 9.27, внутри полигонов самого низшего уровня, с целью получить интересные варианты фигур, как показано на рис. 9.28. Поэкспериментируйте с различными «внутренними линиями».

Тематическое задание 9.3. «Игра в Хаос» Уровень сложности П.

Создайте и протестируйте приложение, которое рисует аттрактор для заданной системы итерируемых функций (IFS). Это приложение могло бы выглядеть примерно так"opengl1_663.html">⇐ Предыдущая| |Следующая ⇒