Курсовая работа по объектно-ориентированному программированию Тема: «Генератор фракталов»
Разработка структуры классов
Алгоритм построения фрактала «Снежинка Коха»
Метод DrawKoch(), в котором генерируется фрактал «Снежинка коха».
Главная форма «Генератор фракталов»
Главная форма «Генератор фракталов»
Тестирование программы
Заключение
512.98K
Category: programmingprogramming

Генератор фракталов

1. Курсовая работа по объектно-ориентированному программированию Тема: «Генератор фракталов»

Министерство науки и высшего образования Российской Федерации
Муромский институт (филиал)
федерального государственного бюджетного образовательного учреждения высшего образования
«Владимирский государственный университет
имени Александра Григорьевича и Николая Григорьевича Столетовых»
(МИ ВлГУ)
Курсовая работа
по объектно-ориентированному программированию
Тема: «Генератор фракталов»
Выполнил:
Студент ИС-120
Белов М.С.
Проверил:
к. т. н., доц. каф. ИС
Канунова Е.Е.
Муром 2022

2.

Цель: изучение и закрепление принципов объектно-ориентированного
программирования на примере разработки программы «Генератор
фракталов».
Задачи:
1. Изучение литературных материалов по теме работы.
2. Выбор технологии разработки приложения.
3. Разработка структуры классов.
4. Разработка программы.
5. Тестирование и отладка приложения
2/9

3. Разработка структуры классов

3/9

4. Алгоритм построения фрактала «Снежинка Коха»

1.
2.
3.
4.
4/9
Определяются начальные координаты для построения исходного треугольника
Зарисовка треугольника
Зарисовка трех кривых Коха на сторонах треугольника
Вызывается рекурсивная функция для построения полного фрактала

5. Метод DrawKoch(), в котором генерируется фрактал «Снежинка коха».

public void DrawKoch(Graphics g, int iter)
{
//Выбираем цвета зарисовки
pen1 = new Pen(Color.Green, 1);
pen2 = new Pen(Color.Blue, 1);
//Объявляем объект "g" класса Graphics
g.Clear(Color.Black);//Зарисовка экрана черным фоном
//Определим коорднаты исходного треугольника
var point1 = new PointF(200, 200);
var point2 = new PointF(500, 200);
var point3 = new PointF(350, 400);
//Зарисуем треугольник
g.DrawLine(pen1, point1, point2);
g.DrawLine(pen1, point2, point3);
g.DrawLine(pen1, point3, point1);
//Вызываем функцию Fractal для того, чтобы
//нарисовать три кривых Коха на сторонах треугольника
Koch(g, point1, point2, point3, iter);
Koch(g, point2, point3, point1, iter);
Koch(g, point3, point1, point2, iter);
}
5/9
private int Koch(Graphics g, PointF p1, PointF p2, PointF p3, int iter)
{
//n -количество итераций
if (iter > 0) //условие выхода из рекурсии
{
//средняя треть отрезка
var p4 = new PointF((p2.X + 2 * p1.X) / 3, (p2.Y + 2 * p1.Y) / 3);
var p5 = new PointF((2 * p2.X + p1.X) / 3, (p1.Y + 2 * p2.Y) / 3);
//координаты вершины угла
var ps = new PointF((p2.X + p1.X) / 2, (p2.Y + p1.Y) / 2);
var pn = new PointF((4 * ps.X - p3.X) / 3, (4 * ps.Y - p3.Y) / 3);
//рисуем его
g.DrawLine(pen1, p4, pn);
g.DrawLine(pen1, p5, pn);
g.DrawLine(pen2, p4, p5);
//рекурсивно вызываем функцию нужное число раз
Koch(g, p4, pn, p5, iter - 1);
Koch(g, pn, p5, p4, iter - 1);
Koch(g, p1, p4, new PointF((2 * p1.X + p3.X) / 3, (2 * p1.Y + p3.Y) / 3), iter - 1);
Koch(g, p5, p2, new PointF((2 * p2.X + p3.X) / 3, (2 * p2.Y + p3.Y) / 3), iter - 1);
}
return iter;
}

6. Главная форма «Генератор фракталов»

6/9

7. Главная форма «Генератор фракталов»

7/9

8. Тестирование программы


Результат
1.
Запуск приложения
Успешно
2.
Генерация фракталов
Успешно
3.
8/9
Действие
Генерация фрактала с измененным начальным
значением
Успешно
4.
Сохранение фракталов
Успешно
5.
Закрытие программы
Успешно

9. Заключение

Выводы:
1. Спроектирована и реализована структура классов;
2. Разработана программа;
3. Протестирована программа.
Разработчик:
студент гр. ИС-120
Белов М.С.
Руководитель:
к.т.н., доцент кафедры ИС МИВлГУ
Канунова Е.Е.
9/9
English     Русский Rules