Научно-исследовательская работа по информатике «Фракталы» (9–10 класс)
СОДЕРЖАНИЕ
1. Введение
2.Виды компьютерной графики
3. Графический режим Паскаль АВС
4. Классификация фракталов. Моделирование фракталов на языке Паскаль АВС
5. Заключение
6. Список литературы
Гипотеза: если изучить закономерность построения фрактала, то его можно смоделировать на языке программирования PascalABC
Методы исследования: сравнительный анализ, синтез, моделирование.
фрактал фрактальная геометрия программирование
Цель: исследовать фракталы в природе и математике и составить программы моделирования фракталов.
Задачи:
узнать, что такое фракталы;
изучить историю возникновения и развития фрактальной геометрии;
ознакомиться с биографией создателя фракталов - Бенуа Мандельброта;
смоделировать фракталы на языке программирования PascalАВС и в графическом редактор GIMP.
Актуальность: Интерес к проблеме обусловлен интересом к компьютерной графики
Результат исследования: Разработка программ построения фракталов
1.Введение
Первый раз, услышав о фракталах, задаёшься вопросом, что это такое?
Это понятие завораживает своей красотой и таинственностью, проявляясь в самых неожиданных областях: метеорологии, философии, географии, биологии, механике и даже истории
Практически невозможно не увидеть фрактал в природе, ведь почти каждый объект (облака, горы, береговая линия и т.д.) имеют фрактальное строение.
По сути, фракталы открывают нам глаза и позволяют посмотреть на графику с другой стороны. Казалось бы, производятся обычные расчёты с обычными «сухими» цифрами, но это даёт нам по-своему уникальные результаты, позволяющие почувствовать себя творцом природы. Фракталы дают понять, что это наука о прекрасном.
Своей проектной работой я хотела узнать о довольном новом понятии «фрактал». Что это такое, какие существуют виды, где распространяются. Я очень надеюсь, что фракталы заинтересовали вас. Ведь, как оказалось, фракталы довольно интересны и они есть почти на каждом шагу.
2. Виды компьютерной графики
Понятие компьютерной графики не ограничивается такими ее видами как, растровая и векторная.
Растровая графика. Растровое изображение хранится с помощью точек различного цвета (пикселей). Каждый пиксель имеет определенное положение и цвет. Хранение каждого пикселя требует определенного количества битов информации, которое зависит от количества цветов в изображении.
Пиксель - минимальный участок изображения, цвет которого можно задать независимым образом. Качество растрового изображения зависит от размера изображения (количества пикселей по горизонтали и вертикали) и количества цветов, которые можно задать для каждого пикселя.
Векторная графика. Векторные графические изображения являются оптимальным средством хранения высокоточных графических объектов (чертежи, схемы и пр.), для которых имеет значение сохранение четких и ясных контуров. С векторной графикой мы сталкиваемся, когда работаем с системами компьютерного черчения и автоматизированного проектирования (САПР), программами обработки трехмерной графики и др.
Векторные изображения формируются из объектов (точка, линия, окружность, прямоугольник), которые хранятся в памяти компьютера в виде графических примитивов и описывающих их математических формул.
Фрактальная графика.Термином «фрактал» (от латинского fractus – дробленый, состоящий из фрагментов) обозначают геометрическую фигуру, обладающую свойством самоподобия, то есть составленную из нескольких частей, каждая из которых подобна всей фигуре целиком. Этот термин был предложен французским математиком Бенуа Мандельбротом в 1975 году и получил распространение с выходом в 1977 году его книги «Фрактальная геометрия природы».
В настоящее время возрастает интерес к применению методов фрактальной геометрии в различных областях науки и техники – физике, астрономии, биологии, медицине, социологии, экономике, информационных и телекоммуникационных технологиях и др. Так, в физике фракталы применяются при изучении поглощения или рассеяния излучения в пористых средах, при анализе процессов усталостного разрушения материалов, для характеристики сильно развитой турбулентности, при моделировании свойств поверхности твердых тел, для описания диэлектрического пробоя и молнии и пр. В биологии фракталы применяются, например, для моделирования процессов, происходящих во внутренних органах (процессов кровообращения, биения сердца и др.), моделирования популяций. Фракталы используются и для моделирования поведения хаотических динамических систем, таких, как поведение погоды, описан способ моделирования исторических процессов и явлений средствами фрактальной геометрии. В экономике фракталы применяют при анализе колебаний курса валют.
Широко применяются фракталы и в области компьютерной графики, например, для получения изображений природных объектов (растений, облаков, гор, береговых линий, ландшафтов, поверхности морей, карт и пр.), при создании компьютерных игр.
Фрактальная графика, как векторная, является вычисляемой. Но, в отличие от векторной графики, основное внимание уделяется не заданию изображения в виде совокупности простых геометрических фигур (прямых, многоугольников, окружностей, многогранников и пр.), а описанию алгоритма построения изображения – фрактальное изображение строится по уравнению или системе уравнений, и никакие объекты в памяти компьютера не хранятся.
3. Графический режим Паскаль АВС
Для работы в графическом режиме необходимо подключение модуля uses GraphABC.
Графический режим Графический экран PasсalABC (по умолчанию) содержит 640 точек по горизонтали и 400 точек по вертикали.
1. Управление экраном SetWindowWidth(w) -устанавливает ширину графического окна;
SetWindowHeight(h) -устанавливает высоту графического окна;
2. Точка SetPixel(x,y,color) – закрашивает один пиксел с координатами (x,y) цветом color
3. Линии Line(x1,y1,x2,y2) - рисует отрезок с началом в точке (x1,y1) и концом в точке (x2,y2).
4. Используемые цвета
clBlack – черный clPurple – фиолетовый clWhite – белый clMaroon – темно-красный clRed – красный clNavy – темно-синий clGreen – зеленый clBrown – коричневый clBlue – синий clSkyBlue – голубой clYellow – желтый clCream – кремовый |
clAqua – бирюзовый clOlive – оливковый clFuchsia – сиреневый clTeal – сине-зеленый clGray – темно-серый clLime – ярко-зеленый clMoneyGreen – цвет зеленых денег clLtGray – светло-серый clDkGray – темно-серый clMedGray – серый clSilver – серебряный |
5. Цвет линии SetPenColor(color) – устанавливает цвет пера, задаваемый параметром color.
6. Прямоугольник Rectangle(x1,y1,x2,y2) – рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
7. Заливка цветом FloodFill(x,y,color) – заливает область одного цвета цветом color, начиная с точки (x,y).
13. Окружность Circle(x,y,r) - рисует окружность с центром в точке (x,y) и радиусом r.
14. Дуга окружности Arc(x,y,r,a1,a2) - рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)
В языке Паскаль предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов.
Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы.
В языке Паскаль имеется два вида подпрограмм - процедуры и функции.
Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы).
Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове – фактическими.
Описание и вызов процедур и функций
Структура описания процедур и функций до некоторой степени похожа на структуру Пакаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, переменных. Исполняемая часть содержит собственно операторы процедур.
Формат описания процедуры имеет вид:
procedure имя процедуры (формальные параметры);
раздел описаний процедуры
begin
исполняемая часть процедуры
end;
Формат описания функции:
function имя функции (формальные параметры): тип результата;
раздел описаний функции
begin
исполняемая часть функции
end;
Формальные параметры в заголовке процедур и функций записываются в виде:
var имя праметра: имя типа
и отделяются друг от друга точкой с запятой.
Вызов процедуры производится оператором, имеющим следующий формат:
имя процедуры(список фактических параметров);
Список фактических параметров - это их перечисление через запятую. При вызове фактические параметры как бы подставляются вместо формальных, стоящих на тех же местах в заголовке. Таким образом, происходит передача входных параметров, затем выполняются операторы исполняемой части процедуры, после чего происходит возврат в вызывающий блок. Передача выходных параметров происходит непосредственно во время работы исполняемой части.
Для передачи в вызывающий блок выходного значения функции в исполняемой части функции, перед возвратом в вызывающий блок необходимо поместить следующую команду:
имя функции := результат;
При вызове процедур и функций необходимо соблюдать следующие правила:
количество фактических параметров должно совпадать с количеством формальных;
соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
4. Классификация фракталов. Моделирование фракталов на языке Паскаль АВС
Существует несколько классификаций фракталов:
Геометрические фракталы.
Алгебраические фракталы.
Стохастические фракталы.
Геометрические фракталы.
История фракталов началась с геометрических фракталов, которые исследовались математиками в XIX веке. Фракталы этого класса самые наглядные, в них сразу видна самоподобность частей.
Примерами геометрических фракталов являются: треугольник Серпинского, триадная кривая Кох, кривая Пеано, снежинка Кох, кривая дракона, губка Менгера и др.
Геометрические фракталы получаются путем несложных геометрических построений:
1. задается начальное условие (нулевое поколение): фигура, на основании которой строится фрактал;
2. задается процедура , которая определенным образом преобразует нулевое поколение;
3. в результате бесконечного повторения заданной процедуры получается геометрический фрактал.
Построение геометрического фрактала салфетка Серпинского.
Программа построения салфетки Серпинского
program salfetka;
uses graphABC;
procedure treug(x1,y1,x2,y2,x3,y3, n:integer);
var xa, ya, xb, yb, xc, yc:integer;
begin
if n >0 then begin
{рисуем треугольник}
line(x1,y1,x2,y2);
line(x2,y2,x3,y3);
line(x1,y1,x3,y3);
{вычисляем середины сторон}
xa:=(x1+x2) div 2; ya:=(y1+y2) div 2;
xb:=(x3+x2) div 2; yb:=(y3+y2) div 2;
xc:=(x1+x3) div 2; yc:=(y1+y3) div 2;
{рисуем три меньших треугольника}
treug(x1,y1,xa,ya,xc, yc, n-1);
treug(x2,y2,xa, ya,xb,yb, n-1);
treug(x3,y3,xb,yb,xc,yc, n-1);
end;
end;
Begin
treug(100,400,300,40,500,400,5);
End.
Программа построения
Program krugi;
uses GraphABC;
var
r,x,y: integer;
procedure krug(x,y,r:integer);
begin
if (r div 4)>5 then
begin
krug(x-r,y,r div 2);
krug(x+r,y,r div 2);
krug(x,y-r,r div 2);
krug(x,y+r,r div 2);
end;
Arc(x,y,r,0,360);
end;
begin
x:=350;y:=350;
r:=160;
krug(x,y,r);
end.
Program kvadrat;
uses GraphABC;
var
d,x,y: integer;
procedure kvad(x1,y1,x2,y2,d:integer);
begin
if (d div 3)>0 then
begin
kvad(x1+d,y1-d,x2-d,y1,d div 3);
kvad(x1-d,y1+d,x1,y1+2*d,d div 3);
kvad(x2,y1+d,x2+d,y2-d,d div 3);
kvad(x1+d,y2,x2-d,y2+d,d div 3);
end;
rectangle(x1,y1,x2,y2)
end;
begin
kvad(200,200,500,500,100);
end.
Алгебраические фракталы.
Свое название они получили потому, что их строят на основе алгебраических формул. Классический пример алгебраических фракталов – множество Мандельброта, описанное французским математиком Пьером Фату еще в 1905 году. Однако оно было построено Бенуа Мандельбротом в 1980 г.
В его основе лежит кардиоида и круг. Множество Мандельброта облеплено почками, наростами и причудливыми усами. Эти почки и наросты в свою очередь облеплены более мелкими почками и так далее.
При более сильном увеличении в окрестностях границ множества Мандельброта обнаруживаются уменьшенные копии самого множества Мандельброта.
Программа построения
program kardioida;
uses graphABC;
var
a,n,x,y:integer;
t:real;
begin
t:=0;
while t<6.28 do begin
x:=round(320+80*cos(t)*cos(t)+80*cos(t) ) ;
y:=round(240+80*cos(t)*sin(t)+80*sin(t));
SetPixel(x,y,clblue);
if (x mod 47=0) then
if t>3.14 then circle(x+5,y-5,6) else circle(x+5,y+5,6);
t:=t+0.001;
SetPenColor(clblue) ;
circle(520,240,40);
circle(564,240,8);
Line(320,0,320,480);TextOut(318,0,'^');TextOut(620,245,'X');
Line(0,240,640,240);TextOut(326,5,'Y');TextOut(634,232,'>');
end;
end.
Улитка Паскаля ― плоская алгебраическая кривая 4-го порядка, названа по имени Этьена Паскаля (отца Блеза Паскаля), впервые рассмотревшего её.
Уравнение в полярных координатах:
x:=acostcost+bcost ;
y:=acostsint+bsint
Здесь a — диаметр исходной окружности, а b — расстояние, на которое смещается точка вдоль радиус-вектора
При a>b (зеленая)
При a<b(синяя)
При a=b (в этом случае Улитка Паскаля называется кардиоидой).
program ulitkapaskalya;
uses graphABC;
var
n, x, y: integer; f:real;
begin
t:=0;
Line(320,0,320,480);
Line(0,240,640,240);
while t<6.28 do begin
x:=round(320+60*cos(t)*cos(t)+60*cos(t) ) ;
y:=round(240+60*cos(t)*sin(t)+60*sin(t));
SetPixel(x,y,clblue);
t:=t+0.001;
circle(460,240,20);
end;
end.
Стохастические фракталы.
Еще одним известным классом фракталов являются стохастические фракталы, которые получаются в том случае, если в процессе построения случайным образом менять какие-либо его параметры. При этом получаются объекты очень похожие на природные – несимметричные деревья, изрезанные береговые линии и т.д. Именно двумерные стохастические фракталы используются при моделировании рельефа местности и поверхности моря .
В качестве примера стохастического фрактала рассмотрим построение фрактального дерева
Автор предлагает следующий алгоритм построения фрактального дерева. Сначала строится ствол дерева случайной длины, от него строятся несколько ветвей также случайной длины, при этом их толщина уменьшается. Затем от каждой из веток в зависимости от их длин может строиться еще несколько веток, и цикл повторяется. На каждом шаге проверяется длина ветки: если она меньше некоторой заранее определенной величины, то вместо веток рисуется лист, и для этой ветки итерационный процесс прекращается.
Фрактальное дерево представлено на рисунке.
Рис. Фрактальное дерево
5.Заключение
Роль фракталов в компьютерной графике сегодня достаточно велика, и я убедилась в этом, выполняя исследовательскую работу, в ходе которой научилась строить некоторые виды фракталов, узнала, что существуют специальные программы для моделирования фракталов, убедилась в том, что область применения фракталов чрезвычайно велика. Они приходят на помощь, например, когда требуется, с помощью нескольких коэффициентов, задать линии и поверхности очень сложной формы. С точки зрения компьютерной графики, фрактальная геометрия незаменима при генерации искусственных облаков, гор, поверхности моря. Фактически найден способ легкого представления сложных неевклидовых объектов, образы которых весьма похожи на природные.
Данную работу можно использовать на уроках информатики при изучении графики в среде PascalABC, а так же на уроках геометрии и искусства.
Фракталы
Красивые, таинственные
Манят, завораживают, привлекают
Мне они очень нравятся
Графика.
6. Литература
1) Алгебраические фракталы. [Электронный ресурс] / В.А. Трухачева, И. Сидоренко, А.В. Бородина. – Электрон. текстовые данные (32998 bytes). – Режим доступа: http://dssp.petrsu.ru/~KOF/kse-pact/index.html
2) Божокин С.В. Фракталы и мультифракталы: Учебное пособие/ С.В. Божокин, Д.А. Паршин – Москва–Ижевск: НИЦ «Регулярная и хаотическая динамика», 2001. – 128 с.
3) Ватолин Д.C. Применение фракталов в машинной графике. / Д.С. Ватолин // Computerworld-Россия. – 1995. – N15. – С. 11
4) Вольхин К.А. Основы компьютерной графики: Электронные методические указания к лабораторным работам для студентов [Электронный ресурс] / Вольхин К.А. http://grafika.stu.ru/wolchin/umm/pr_kg/
5) Генерация фрактальных деревьев [Электронный ресурс] / M.В. Котов. – Электрон. текстовые данные (6372 bytes). – Режим доступа: http://fractalworld.narod.ru/article/tree3.html
6) Доступно о фракталах [Электронный ресурс] – Электрон. текстовые данные (6242 bytes). – Режим доступа: http://fract.narod.ru/index.htm
Приложение.
Сафронова Ирина Александровна
Елена Вениаминовна Чурина