Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
16.04.2013
Размер:
7.77 Кб
Скачать
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#define Pi 3.14519
#include <math.h>

#include "Unit1.h"
#include "Main.h"
#include "About.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const N=360;
float ch1[3*N];
float ch2[3*N];
float ch3[3*N];
float ch4[3*N];
float ch5[3*N];
int chet=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
Timer1->Enabled=false;
for (int i=0;i<N;i+=1)
{
double t=2*(2*Pi*double(i)/double(N)-Pi);
ch1[i]=-sin(t*t)*0.72;
Chart3->Series[0]->AddXY(i,ch1[i],"",clRed);
ch2[i]=cos(t*t)*0.72;
Chart4->Series[0]->AddXY(i,ch2[i],"",clRed);
ch1[i+N]=0.0;
ch2[i+N]=0.0;
ch1[i+2*N]=0.0;
ch2[i+2*N]=0.0;
ch3[i]=0;
ch4[i]=0;
ch3[i+N]=sin(t*t);
ch4[i+N]=cos(t*t);
ch3[i+2*N]=0;
ch4[i+2*N]=0;
ch5[i]=0.0;
ch5[i+N]=0.0;
ch5[i+2*N]=0.0;
Chart1->Series[0]->AddXY(i,ch3[i],"",clRed);
Chart2->Series[0]->AddXY(i,ch4[i],"",clRed);
}

}
//---------------------------------------------------------------------------
void svertka()
{
float sum=0.0;
float Re=0.0;
float Im=0.0;
for (int i=0;i<3*N;i++)
{
Re+=ch2[i]*ch4[2*N+i]-ch1[i]*ch3[2*N+i];
Im+=ch1[i]*ch4[i+2*N]+ch2[i]*ch3[2*N+i];
}
sum=sqrt(Re*Re+Im*Im);
ch5[chet]=sum;
};

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

void __fastcall TForm1::FormActivate(TObject *Sender)
{
((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->LoadFromFile("parametr.txt");
if(MainForm->MDIChildCount)
Edit1->Text=((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->Strings[0];
//Edit1->Text=MainForm->Edit2->Text;
Edit2->Text=((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->Strings[1];
//MainForm->Edit2->Text=((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->Strings[0];
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if (chet>=(3*N-1))
{
Timer1->Enabled=false;
}
else
{
Chart1->Series[0]->Clear();
Chart2->Series[0]->Clear();
Chart5->Series[0]->Clear();
svertka();
for (int i=0;i<N;i++)
{
Chart1->Series[0]->AddXY(i,ch3[2*N+i],"",clRed);
Chart2->Series[0]->AddXY(i,ch4[2*N+i],"",clRed);
}
for (int i=0;i<3*N;i++)
{
Chart5->Series[0]->AddXY(i,ch5[i],"",clRed);
}
double tempy=ch3[N-1];
double tempk=ch4[N-1];
for (int i=3*N-1;i>0;i--)
{
ch3[i]=ch3[i-1];
ch4[i]=ch4[i-1];
}
ch3[0]=tempy;
ch4[0]=tempk;
//double tempk=Chart4->Series[0]->YValue[3*N-1];
//Chart4->Series[0]->YValue[0]=tempk;
chet++;
}

}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
Chart3->LeftAxis->Automatic=false;
Chart3->LeftAxis->Maximum=1;
Chart3->LeftAxis->Minimum=-1;
Chart3->BottomAxis->Automatic=false;
Chart3->BottomAxis->Maximum=N;
Chart3->BottomAxis->Minimum=0;

Chart4->LeftAxis->Automatic=false;
Chart4->LeftAxis->Maximum=1;
Chart4->LeftAxis->Minimum=-1;
Chart4->BottomAxis->Automatic=false;
Chart4->BottomAxis->Maximum=N;
Chart4->BottomAxis->Minimum=0;

Chart1->LeftAxis->Automatic=false;
Chart1->LeftAxis->Maximum=1;
Chart1->LeftAxis->Minimum=-1;
Chart1->BottomAxis->Automatic=false;
Chart1->BottomAxis->Maximum=N;
Chart1->BottomAxis->Minimum=0;

Chart2->LeftAxis->Automatic=false;
Chart2->LeftAxis->Maximum=1;
Chart2->LeftAxis->Minimum=-1;
Chart2->BottomAxis->Automatic=false;
Chart2->BottomAxis->Maximum=N;
Chart2->BottomAxis->Minimum=0;

Chart5->LeftAxis->Automatic=false;
Chart5->LeftAxis->Maximum=N;
Chart5->LeftAxis->Minimum=-1;
Chart5->BottomAxis->Automatic=false;
Chart5->BottomAxis->Maximum=3*N;
Chart5->BottomAxis->Minimum=0;

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
Timer1->Enabled=true;
double k=StrToFloat(Edit1->Text);
double l=StrToFloat(Edit2->Text);
Chart1->Series[0]->Clear();
Chart2->Series[0]->Clear();
Chart3->Series[0]->Clear();
Chart4->Series[0]->Clear();
Chart5->Series[0]->Clear();

for (int i=0;i<N;i+=1)
{
double t=(1.5*k)*2*(2*Pi*double(i)/double(N)-Pi);
ch1[i]=-sin(t*t)*(0.72+l);
//Chart3->Series[0]->AddXY(i,ch1[i],"",clRed);
ch2[i]=cos(t*t)*(0.72+l);
//Chart4->Series[0]->AddXY(i,ch2[i],"",clRed);
ch1[i+N]=0.0;
ch2[i+N]=0.0;
ch1[i+2*N]=0.0;
ch2[i+2*N]=0.0;
ch3[i]=0;
ch4[i]=0;
ch3[i+N]=sin(t*t);
ch4[i+N]=cos(t*t);
ch3[i+2*N]=0;
ch4[i+2*N]=0;
ch5[i]=0.0;
ch5[i+N]=0.0;
ch5[i+2*N]=0.0;
Chart1->Series[0]->AddXY(i,ch3[i],"",clRed);
Chart2->Series[0]->AddXY(i,ch4[i],"",clRed);
Chart3->Series[0]->AddXY(i,ch1[i],"",clRed);
Chart4->Series[0]->AddXY(i,ch2[i],"",clRed);
//Chart5->Series[0]->AddXY(i,ch5[i],"",clRed);
}

if (chet>=(3*N-1))
{
Timer1->Enabled=false;
}
else
{
Chart1->Series[0]->Clear();
Chart2->Series[0]->Clear();
//Chart3->Series[0]->Clear();
//Chart4->Series[0]->Clear();
Chart5->Series[0]->Clear();
svertka();
for (int i=0;i<N;i++)
{
Chart1->Series[0]->AddXY(i,ch3[2*N+i],"",clRed);
Chart2->Series[0]->AddXY(i,ch4[2*N+i],"",clRed);
}
for (int i=0;i<3*N;i++)
{
//Chart5->Series[0]->Clear();
Chart5->Series[0]->AddXY(i,ch5[i],"",clRed);
}
double tempy=ch3[N-1];
double tempk=ch4[N-1];
for (int i=3*N-1;i>0;i--)
{
ch3[i]=ch3[i-1];
ch4[i]=ch4[i-1];
}
ch3[0]=tempy;
ch4[0]=tempk;
//double tempk=Chart4->Series[0]->YValue[3*N-1];
//Chart4->Series[0]->YValue[0]=tempk;
chet++;
}

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
{
//((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->LoadFromFile("qqq.txt");
if(MainForm->MDIChildCount)
((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->Strings[0]=Edit1->Text;
//Edit1->Text=MainForm->Edit2->Text;
((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->Strings[1]=Edit2->Text;
//MainForm->Edit2->Text=((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->Strings[0];
((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->SaveToFile("parametr.txt");



//if(MainForm->MDIChildCount)
//Edit1->Text=((TMDIChild*)MainForm->MDIChildren[0])->Edit2->Text;
//Edit1->Text=MainForm->Edit2->Text;
//MainForm->Edit2->Text=Edit1->Text;
//MainForm->Edit3->Text=Edit2->Text;
ShowMessage("Теперь текстовый файл parametr.txt имеет значения, введенные в Edit1 и Edit2 формы Form1");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
ModalResult=mrOk;
//((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->LoadFromFile("qqq.txt");
if(MainForm->MDIChildCount)
((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->Strings[0]=Edit1->Text;
//Edit1->Text=MainForm->Edit2->Text;
((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->Strings[1]=Edit2->Text;
//MainForm->Edit2->Text=((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->Strings[0];
((TMDIChild*)MainForm->MDIChildren[0])->Memo1->Lines->SaveToFile("parametr.txt");

//MainForm->Edit2->Text=Edit1->Text;
//MainForm->Edit3->Text=Edit2->Text;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
Chart1->Series[0]->Clear();
Chart2->Series[0]->Clear();
Chart3->Series[0]->Clear();
Chart4->Series[0]->Clear();
Chart5->Series[0]->Clear();
Timer1->Enabled=false;
//Timer1->Interval=0;
}
//---------------------------------------------------------------------------

Соседние файлы в папке L5_2