|
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int j=1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Series1->Clear();
Series2->Clear();
Series3->Clear();
int i, k, ag;
float sum;
if(RadioGroup1->ItemIndex==0) ag=360;
else if(RadioGroup1->ItemIndex==1) ag=3600;
else if(RadioGroup1->ItemIndex==2) ag=36000;
PB1->Max=ag;
if(RadioGroup2->ItemIndex==0) //구형파
{
for(i=0; i<ag; i++)
{
sum=0.0;
for(k=1; k<=j; k+=2)
{
sum += (4.0/M_PI/k) *sin(k*(2*M_PI)*i/ag);
}
PB1->StepBy(1);
Series1->Add(sum, i, clRed);
}
PB1->Position=0;
Edit1->Text=j;
j+=2;
}
if(RadioGroup2->ItemIndex==1) //톱날파
{
for(i=0; i<ag; i++)
{
sum=0.0;
for(k=1; k<=j; k++)
{
if(k%2==1)
{
sum += (4.0/k) *sin(k*(2*M_PI)*i/ag);
}
else sum -= (4.0/k) *sin(k*(2*M_PI)*i/ag);
}
PB1->StepBy(1);
Series2->Add(sum, i, clBlue);
}
PB1->Position=0;
Edit1->Text=j;
j++;
}
if(RadioGroup2->ItemIndex==2) //삼각파
{
for(i=0; i<ag; i++)
{
sum=0.0;
for(k=1; k<=j; k+=2)
{
if(k%4==1)
{
sum += (1.0/pow(k,2)) *sin(k*(2*M_PI)*i/ag);
}
else sum -= (1.0/pow(k,2)) *sin(k*(2*M_PI)*i/ag);
}
PB1->StepBy(1);
Series3->Add((8.0/pow(M_PI,2)*sum), i, clGreen);
}
PB1->Position=0;
Edit1->Text=j;
j+=2;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Series4->Clear();
Series5->Clear();
int i, k;
float sum, sum1;
sum1=0.0;
for(i=0; i<360; i++)
{
sum=0.0;
for(k=1; k<=j; k+=2)
{
sum += (4.0/M_PI/k) *sin(k*(2*M_PI)*i/360.0);
}
Series4->Add(sum, i, clRed);
if(i<180)
{
sum1 += fabs(1-sum);
Series5->Add(1, i, clBlue);
}
else Series5->Add(-1, i, clBlue);
}
Series3->Add(sum1/180.0, j, clGreen);
Edit2->Text=j;
Edit3->Text=(sum1/180.0);
j+=2;
}
//---------------------------------------------------------------------------
riojjang@yahoo.co.kr 자세한 설명좀 부탁드려요.고수님들.ㅜㅜ파형나타나게 하는 프로그램이거든요.통신쪽분이시면 더 쉽게 아실듯..빠른답변부탁드립니다.
|