- •Аннотация
- •Оглавление
- •1 Постановка задачи
- •2 Введение
- •3 Алгоритмы построения фракталов
- •3.1 Кривая Коха
- •Построение:
- •Свойства:
- •3.2 Кривая дракона
- •Построение
- •3.3 Множество Кантора
- •Построение
- •Свойства
- •3.4 Ковер Серпинского
- •Построение
- •Свойства
- •3.5 Дерево Пифагора
- •Построение
- •Свойства
- •4.5 Описание структурных элементов программы
- •4.5.1 Основная форма
- •4.5.2 Дочерняя форма
- •4.6 Инструкция пользователю
- •4.7 Описание интерфейса
- •5 Заключение
- •6 Список литературы
- •7 Приложение
4.5 Описание структурных элементов программы
4.5.1 Основная форма
Основная форма и логика вычисления координат для рисования фракталов описаны в следующих файлах:
• Unit1.dfm
• Unit1.h
• Unit1.cpp
Файл Unit1.dfm представляет из себя структурированное описание свойств формы и ее элементов таких как физические характеристики (размеры, расположение), значения по умолчанию и др.
Файл Unit1.h содержит описание класса TMainForm, который наследуется от абстрактного класса TForm, а так же его полей и методов. Наша основная форма является объектом этого класса.
Файл Unit1.cpp содержит логику методов класса TMainForm, а именно:
void pithagorasTree(point p1, point p2, double angle,int level);
void cantorSet(point a, point b, int level);
void kochCurve(point p1, point p2, double angle, int level);
void dragonCurve(point a, point b, int level);
void rounds(point p, int size, int level);
void sierpinskiCarpet(point a, double size, int level);
void canvasStatus(int type);
bool validate(int type);
Методы с названиями соответствующие названиями фракталов отвечают за логику вычисления координат для рисования фрактала на очереднеой итерации.
Метод canvasStatus используется для своевременного отображения процесса рисования на канве в случае если процесс занимает продолжительное время.
Метод validate разбирает введенные данные и проверяет их на корректность.
Кроме того в файле описаны дополнительные структуры данных, использованные в проекте (struct point), и вспомогательные функции, используемые основными методами рисования, как, например, функция вычисления координат крайних точек отрезка после поворота вокруг одной из них (getNewCoord).
4.5.2 Дочерняя форма
Дочерняя форма описана в файлах
• Unit2.dfm
• Unit2.h
• Unit2.cpp
Структура файлов такая же, как и у Основной формы. Файл Unit2.dfm описывает свойства формы и ее элементов, файл Unit2.h описывает класс TCanvasForm, наследуемый от класса TForm, а файл Unit2.cpp описывает единственный метод этого класса TCanvasForm::N2Click, который обеспечивает вызов диалог сохранения файла и записывает содержимое канвы с указанный пользователем файл.
4.6 Инструкция пользователю
В этом разделе будут указаны общие правила работы и рекомендуемые входные данные для корректного отображения фракталов.
Для всех фракталов обязательно:
1) Все поля ввода должны быть заполнены целыми неотрицательными числами. Иначе пользователь увидит уведомление с просьбой проверить данные.
2) Координаты считаются согласно Декартовой системе координат (из левого нижнего угла).
Далее будут перечислены опциональные требования (советы), которые необязательны к выполнению и приведены здесь только для удобства пользователя (за исключением помеченных):
• Для «Множества Кантора»:
1) Точки расположены на большом расстоянии от оси (иначе изображение фрактала «уедет» за ось и не будет видно).
2) Координаты обеих точек должны быть одинаковыми (обязательно).
3) Ставить глубину больше 7 нецелесообразно, так как толщина линии получается меньше допустимого компьютером размера (1px) и рисование не производится.
• Для Кривой дракона:
1) Начальные точки расположены ближе к центру на небольшом удалении друг от друга (не более 200px), иначе кривая может «уехать» за границы канвы.
2) Глубину фрактала выставлять ≤15, иначе построение может занять много времени.
• Для «Кривой Коха»
-
Точки желательно располагать на большом расстоянии друг от друга, но на минимальном удалении от оси , которое больше нуля.
2) Координаты обеих точек должны быть одинаковыми (обязательно).
• Для «Дерева Пифагора»:
1) Корень дерева должен быть расположен параллельно оси (координаты нижних точек корня одинаковы – обязательно).
2) Корень дерева должен располагаться близко к оси , иначе есть вероятность, что ветви и листья «выплывут» за границы канвы.
3) Размер стороны корня (разница между координатами ) ≤ 150.
• Для «Кругового фрактала»:
1) Уместить основную окружность в границы канвы.
2) Глубину устанавливать ≤4 для скорости рисования.
• Для «Ковра Серпинского»:
1) Выбрать в качестве координаты верхнего левого угла центрального прямоугольника точку, смещенную от центра в направлении северо-запада (), размер стороны указывать не более высоты канвы (во избежание «выползания» ковра за границы).
2) Глубину желательно устанавливать ≤3 для скорости работы.
После заполнения формы нужно нажать кнопку «Draw It!». После этого справа от основной формы появится форма канвы с отрисованным фракталом (Рисунок 12).
Для того чтобы сохранить сгенерированное изображение, нужно на канве выбрать в главном меню пункт Image→Save, указать имя файла и путь его сохранения, нажать кнопку «Сохранить»/«Save». Файл сохранится с указанным именем в формате *.BMP.