О (X. Р -* РР. X -» Р-[[Х]+Х]+Р[+РХ]-Х. 22.5°) (еще один куст). О (X, Р -» Р, X -» [-Р+Рт+Р][+Р-Р[Х]-Р], У -» [-Р+Р[У]+Р] [+Р-Р-Р], 60°) (шестиугольная мозаика). О (Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х+Х, Р _> х -» [Р+Р+Р+РЕ- Х-УЗ-ни-н-Р! пни 1Р-Р-Р-Р3, У -» [Р+Р+Р+РС-У]| 1111Р1111111 |р-Р-Р-Р]. 15°) (апериодическая мозаика).

9.3.6. Реализация черепашьих стеков О Реализуйте стек черепахи как связный список узлов типа tTurt^eStack, где каждый узел содержит два поля, одно типа £Гиг£1е (содержащее СР и СБ), а второе - указатель на тип tTurt^eStack.

О Напишите подпрограмму под названием БауеТиггЛеО, которая выделяет новую память для узла, загружает в эту память состояние черепахи и проталкивает этот узел в вершину стека.

9.4. Замощение плоскости О Напишите функцию к^огеТиг^еО, которая выталкивает верхний узел из стека, использует полученные данные для обновления текущего состояния черепахи, а затем освобождает память, занимаемую узлом.

О Проверьте подпрограммы, разработанные вами в предыдущих пунктах, в программе, которая рисует каждый из рассмотренных в этом разделе ветвящихся объектов.

9.3.3. Добавление случайности и сужения Ветвящиеся объекты, такие как кусты, могут выглядеть более естественными, если будут сделаны менее правильными. В инструкции создания строк можно включить небольшой элемент случайности (например, путем добавления маленького случайного смещения к каждому углу поворота при каждом появлении в строке символов '+' или ' -'). Далее, если придать ветвям толщину, то было бы приятнее для глаз изобразить «сужение» ветвей, становящихся более тонкими. На рис. 9.12 приведены симпатичные примеры, построенные с помощью таких усовершенствований. Поэкспериментируйте в подпрограмме ргос1исе5т,Г1пд() с различными видами случайности и найдите несколько комбинаций параметров, которые приводят к наилучшим результатам.

Добавление к деревьям случайности и сужения (с разрешения Bill McQuaid and Adam Lavine)

Рис. 9.12. Добавление к деревьям случайности и сужения (с разрешения Bill McQuaid and Adam Lavine)


⇐ Предыдущая| |Следующая ⇒