Автор: Пользователь скрыл имя, 28 Декабря 2010 в 00:16, курсовая работа
Работа посвящена исследованию фракталов. В данной работе рассматривается Кривая Леви- кривая, которая нигде не дифференцируема и не спрямляема. Она строится на отрезке, который заменяется прямоугольным треугольником и сам отрезок удаляется.
Целью работы является исследование фрактала: Кривой Леви. Для достижения поставленной цели в работе рассмотрены теоретические вопросы в данной предметной области, предложен способ построения Кривой Леви. Разработано программное обеспечение, реализующее предложенный способ.
Введение ____________________________________________________________5
1. Теоретический раздел________________________________________________7
1.1. Понятие фрактал__________________________________________________7
1.2. Виды фракталов___________________________________________________7
1.3. Кривая Леви___________________________________________________9
1.3.2Построение Кривой Леви_______________________________________10
1.4 Графика__________________________________________________________11
1.4.1 Графические средства операционной системы Windows_____________11
1.4.2 Работа с графикой с использованием классов, свойств и функций компонент Borland C++ Builder____________________________________________12
2. Проектный раздел __________________________________________________16
3. Программный раздел__________________________________________________17
4. Экспериментальный раздел____________________________________________ 19
Заключение ____________________________________________________________22
Список использованных источников_______________________________________
2. Проектный раздел
2.3.Метод решения :
Создается функция, в которую передается
количество сделанных рекурсий и координаты
линии, на которой надо построить следующий
уровень фрактала. Где каждую координату
точки отрезка вычисля
, . И рисует
её по этим координатам. А потом вызывает
себя.
2.4.Алгоритм
решения задачи:
3. Программный раздел
Основные функции и их описания:
void __fastcall Button1Click(TObject *Sender);
-в этой функции происходит очистка экрана.
void __fastcall Button2Click(TObject *Sender);
-функция выхода.
void __fastcall Button3Click(TObject *Sender);
-эта функция вызывает функцию, где выполняется алгоритм построения фрактала.
void __fastcall Pysk(float x1,float y1,float x2,float y2,int i);
-функция
выполняет вычисление
void __fastcall Edit1Change(TObject *Sender);
- сюда
передается количество рекурсий.
Листинг программы:
#ifndef Unit1H
#define Unit1H
//----------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//----------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TImage *Image1;
TButton *Button1;
TEdit *Edit1;
TButton *Button2;
TButton *Button3;
TLabel *Label1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall Button3Click(TObject *Sender);
void __fastcall Pysk(float x1,float y1,float x2,float y2,int i);
void __fastcall Edit1Change(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//----------------------
extern PACKAGE TForm1 *Form1;
//----------------------
#endif
#include <vcl.h>
#include <conio.h>
#pragma
hdrstop
#include "Unit1.h"
//----------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
int n,i=0;
TForm1 *Form1;
//----------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Canvas->Brush->Color = (TColor)RGB(255,255,255);
Form1->Image1->Canvas->
}
//----------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Canvas->Brush->Color = (TColor)RGB(255,255,255);
Form1->Image1->Canvas->
}
//----------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
exit(0);
}
//----------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
if(n>=0)
Pysk(140,350,360,350,0);
}
//----------------------
void __fastcall TForm1::Pysk(float x1,float y1,float x2,float y2,int i)
{
float x,y;
Canvas->Pen->Color=(
Canvas->MoveTo(x1,y1);
Canvas->LineTo(x2,y2);
if(i<n){
Canvas->Pen->Color=(TColor)
Canvas->MoveTo(x1,y1);
Canvas->LineTo(x2,y2);
x=(x1+x2)/2+(y2-y1)/2;
y=(y1+y2)/2-(x2-x1)/2;
Pysk(x,y,x2,y2,i+1);
Pysk(x1,y1,x,y,i+1);
}
}
//----------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
n=StrToInt(Edit1->Text);
}
//----------------------
при n=0
При n=10
при n=20
4.2 проверка в исключительных ситуациях
При вводе пробела
Программа ничего не выдает.
Заключение
В данной работе были рассмотрены все поставленные цели и изучены фракталы и их свойства на пример построения кривой Леви. В ходе разработки программного продукта были изучены графические средства С/С++.
Список использованных источников
Информация
про фракталы:
www.kronics.narod.ru.htm | |
http://ru.wikipedia.org | |
Информация
про функции Builder 6:
http://fract.narod.ru/ | |
http://wladm.narod.ru/Borland/ | |