Исследование фракталов: Кривая Леви

Автор: Пользователь скрыл имя, 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

Список использованных источников_______________________________________

Файлы: 1 файл

Кривая Леви РПЗ КР.docx

— 259.43 Кб (Скачать)
 

 

      2. Проектный раздел

2.1.Словесная постановка задачи: Написать программу реализующую в графическом виде фрактал «Кривой Леви».

2.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->Rectangle(0,0,500,500);

      }

      //--------------------------------------------------------------------------- 

      void __fastcall TForm1::Button1Click(TObject *Sender)

      {

      Canvas->Brush->Color = (TColor)RGB(255,255,255);

      Form1->Image1->Canvas->Rectangle(0,0,500,500);

      }

      //--------------------------------------------------------------------------- 

      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=(TColor)RGB(255,0,30);

      Canvas->MoveTo(x1,y1);

      Canvas->LineTo(x2,y2);

      if(i<n){

            Canvas->Pen->Color=(TColor)RGB(255,255,255);

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

      }

      //--------------------------------------------------------------------------- 
4. Экспериментальный раздел

    1. Проверка в нормальных условиях:

при 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/graphicks.html
   
   
   
   
   

Информация о работе Исследование фракталов: Кривая Леви