fractus3_07.cpp
资源名称:fenxin.rar [点击查看]
上传用户:hzcygd
上传日期:2022-04-30
资源大小:109k
文件大小:3k
源码类别:
分形几何
开发平台:
Visual C++
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #include "fractus3_07.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma resource "*.dfm"
- TForm1 *Form1;
- #include "glib.h"
- int n_rot;
- int N=4;
- double ang,scale,kr,ks;
- double r1;
- double delta=0.0001;TRect rect;
- int colors[16]={0x00000000,0x00FF0000,0x0000FF00,0x00FF8C00,
- 0x000000FF,0x00FF00FF,0x0000FFFF,0x00D7D7D7,
- 0x009BFFFF,0x009BFFFF,0x00A0FF00,0x00FFFF00,
- 0x006E6EFF,0x00FF9BFF,0x009BFFFF,0x00FFFFFF};
- //---------------------------------------------------------------------------
- __fastcall TForm1::TForm1(TComponent* Owner)
- : TForm(Owner)
- {
- }
- //---------------------------------------------------------------------------
- //星形为构成元素的递归图形(2)
- void __fastcall star(double r)
- {TPoint points[16];
- int i;
- turn(180.0);
- warp(r);
- turn(180-ang);
- for(i=0;i<n_rot;i++)
- {move(r*ks);
- turn(180-2*ang);
- }
- turn(ang);
- warp(r);
- }
- //---------------------------------------------------------------------------
- void __fastcall recurs(double r,int n)
- {
- int i,j,k;
- if(n<=N)
- {Form1->Image1->Canvas->Pen->Color=colors[n];
- Form1->Image1->Canvas->Brush->Color=colors[n];
- star(r);
- if(n==1)
- {j=n_rot;k=0;}
- else
- {j=n_rot-1;k=1;}
- for(i=0;i<j;i++)
- {turn(180.0);
- turn((i+k)*kr*ang);
- warp(r*(1+scale));
- recurs(r*scale,n+1);
- turn(180.0);
- warp(r*(1+scale));
- turn(-(i+k)*kr*ang);
- }
- }
- Form1->Image1->Canvas->Pen->Color=colors[n-1];
- }
- void __fastcall TForm1::FormCreate(TObject *Sender)
- {
- Image1->Height=0;Image1->Top=0;
- Image1->Width=Screen->Width;Image1->Height=Screen->Height;
- rect=Rect(0,0,Image1->Width,Image1->Height);//清屏
- Image1->Canvas->CopyMode=cmBlackness;
- Image1->Canvas->CopyRect(rect,Image1->Canvas,rect);
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::N1Click(TObject *Sender)
- {
- Image1->Canvas->CopyRect(rect,Image1->Canvas,rect);
- if(!(n_rot%2))
- {ang=180.0/n_rot;
- ks=2*cos(PI/n_rot);
- kr=2;
- }
- else
- {ang=90.0/n_rot;
- ks=2*cos(PI/(n_rot*2));
- kr=4;
- }
- setlp(320.0,200.0);
- setangle(-90.0);
- recurs(r1,1);
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::N2Click(TObject *Sender)
- {
- if(SavePictureDialog1->Execute())
- Image1->Picture->SaveToFile(SavePictureDialog1->FileName);
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::N3Click(TObject *Sender)
- {
- Close();
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::N4_1Click(TObject *Sender)
- {
- n_rot=7;
- scale=0.3;r1=110.0;
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::N4_2Click(TObject *Sender)
- {
- n_rot=8;
- scale=0.28;r1=110.0;
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::N4_3Click(TObject *Sender)
- {
- n_rot=9;
- scale=0.25;r1=120.0;
- }
- //---------------------------------------------------------------------------