Френсис Хилл

Рис. 3.34. 5-, 11- и 17-розетки Рисовать розетки легко - просто соедините каждую вершину со всеми остальными. Псевдокод для рисования розетки выглядит так:

void Rosette(int N. float radius) {

Point2 ptlbig enough value for largest rosette]: II величина, достаточно большая для наибольшей из розеток Глава 3. Дополнительные инструменты для рисования

generate the vertices pt [0].....pt[N-l], as in Figure 3.43

генерируем вершины pt [0].....pt[N-l], как в листинге 3.13

for(int i - 0: i < N - 1: i++)

for(int j - i + 1: j < N; j++)

{

cvs.moveTo(pt[i]): // connect all the vertices // соединяем все вершины

cvs.lineTo(pt[j]):

}

}

5-розетка особенно интересна, поскольку в ней многократно воплощается золотое отношение ф (см. главу 2). На рис. 3.35, а показана 5-розетка, состоящая из наружного Пентагона и внутренней пентаграммы. Древние греки видели в этой фигуре некий мистический смысл. Ее отрезки находятся в интересном соотношении: каждый отрезок в ф раз длиннее, чем следующий меньший отрезок (см. упражнения). Кроме того, поскольку ребра пентаграммы составляют внутренний Пентагон, возможна бесконечная регрессия пентаграмм, как это показано на рис. 3.35, б.

Френсис Хилл

а б Рис. 3.35.5-розетка и бесконечная регрессия пентагонов и пентаграмм Пример 3.6.3. Фигуры, основанные на двух концентрических п-угольниках На рис. 3.36 изображено несколько форм, построенных на двух концентрических порождающих окружностях: внешней с радиусом /? и внутренней с радиусом //?, где / - некоторая дробь. В каждой фигуре используется разновидность и-угольника, величина радиуса которого находится между внутренним и внешним радиусами. Части а) и б) рисунка представляют собой известные логотипы компаний на базе 6-угольника и 10-уголышка. Фигура в) построена на 14-угольнике, а на рисунке г) показан в явном виде вписанный круг.

Френсис Хилл

аба г Рис. 3.36. Семейство знаменитых логотипов

3.6. Фигуры на основе правильных многоугольников Практические упражнения

3.6.1. Звездчатые формы и розетки Пентаграмма рисуется путем соединения каждой второй точки при обходе пентагона. Обобщите данную схему на произвольный я-угольник с нечетным числом сторон и разработайте подпрограмму, рисующую этот так называемый «звездчатый многоугольник». Можно ли осуществить такую процедуру, используя единственную начальную команду moveToO, за которой следуют только команды ІіпеТоО (то есть без единого «поднятия пера»)? Что произойдет, если я четное?


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