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

Слайд 2

Цель: изучение и закрепление принципов объектно-ориентированного программирования на примере разработки программы

Цель: изучение и закрепление принципов объектно-ориентированного программирования на примере разработки программы

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

/9

Слайд 3

Разработка структуры классов /9

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

/9

Слайд 4

Алгоритм построения фрактала «Снежинка Коха» /9 Определяются начальные координаты для построения

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

/9

Определяются начальные координаты для построения исходного треугольника
Зарисовка

треугольника
Зарисовка трех кривых Коха на сторонах треугольника
Вызывается рекурсивная функция для построения полного фрактала
Слайд 5

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

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

/9

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);
}

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

Главная форма «Генератор фракталов» /9

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

/9

Слайд 7

Главная форма «Генератор фракталов» /9

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

/9

Слайд 8

Тестирование программы /9

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

/9