有一段C++ builder代码,如何转成delphi?????????
void __fastcall TForm1::Button4Click(TObject *Sender)
{
//DFT G=FgF
int n;
TColor bgr;
TColor Cb,Cg,Cr;
float xx_r,xx_i;complex<float> g[128][128];
complex<float> F[128][128];
complex<float> G1[128][128];
complex<float> G[128][128];float fA[128][128],fP[128][128];for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
xx_r=nData[i][k];
complex<float> yy1(xx_r,0);
g[i][k]=yy1;
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
xx_r=cos(2*PI*i*k/128);
xx_i=-sin(2*PI*i*k/128);
complex<float> yy2(xx_r,xx_i); F[i][k]=yy2;
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<float> yy3(0,0);
G1[i][k]=yy3; for(int n=0;n<128;n++)
{
G1[i][k]=G1[i][k]+F[i][n]*g[n][k];
}
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<float> yy4(0,0);
G[i][k]=yy4;
for(int m=0;m<128;m++)
{
G[i][k]=G[i][k]+G1[i][m]*F[m][k];
}
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<double> d=G[i][k];
fA[i][k]=sqrt(pow(d.real(),2)+pow(d.imag(),2));
fA[i][k]=log(fA[i][k]);
if(fA[i][k]<0) fA[i][k]=0;
}
float fMax=0;
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
if(fMax<fA[i][k]) fMax=fA[i][k];
}
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
fA[i][k]=255*fA[i][k]/fMax;
}short s[128][128];
for (int i = 0; i < 64; i++)
for (int k = 0; k < 64; k++)
{
s[i+64][k+64]=(short)(fA[i][k]);
s[i][k]=(short)(fA[i+64][k+64]);
}for (int i = 0; i < 64; i++)
for (int k = 64; k < 128; k++)
{
s[i][k]=(short)(fA[i+64][k-64]);
s[i+64][k-64]=(short)(fA[i][k]);
}short nC;
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
nC=s[i][k]; Cb=nC;
Cg=nC << 8;
Cr=nC << 16;
bgr=Cb | Cg |Cr;
Image5->Canvas->Pixels[i][k] = bgr;
}void __fastcall TForm1::Button4Click(TObject *Sender)
{
//DFT G=FgF
int n;
TColor bgr;
TColor Cb,Cg,Cr;
float xx_r,xx_i;complex<float> g[128][128];
complex<float> F[128][128];
complex<float> G1[128][128];
complex<float> G[128][128];float fA[128][128],fP[128][128];for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
xx_r=nData[i][k];
complex<float> yy1(xx_r,0);
g[i][k]=yy1;
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
xx_r=cos(2*PI*i*k/128);
xx_i=-sin(2*PI*i*k/128);
complex<float> yy2(xx_r,xx_i); F[i][k]=yy2;
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<float> yy3(0,0);
G1[i][k]=yy3; for(int n=0;n<128;n++)
{
G1[i][k]=G1[i][k]+F[i][n]*g[n][k];
}
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<float> yy4(0,0);
G[i][k]=yy4;
for(int m=0;m<128;m++)
{
G[i][k]=G[i][k]+G1[i][m]*F[m][k];
}
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<double> d=G[i][k];
fA[i][k]=sqrt(pow(d.real(),2)+pow(d.imag(),2));
fA[i][k]=log(fA[i][k]);
if(fA[i][k]<0) fA[i][k]=0;
}
float fMax=0;
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
if(fMax<fA[i][k]) fMax=fA[i][k];
}
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
fA[i][k]=255*fA[i][k]/fMax;
}short s[128][128];
for (int i = 0; i < 64; i++)
for (int k = 0; k < 64; k++)
{
s[i+64][k+64]=(short)(fA[i][k]);
s[i][k]=(short)(fA[i+64][k+64]);
}for (int i = 0; i < 64; i++)
for (int k = 64; k < 128; k++)
{
s[i][k]=(short)(fA[i+64][k-64]);
s[i+64][k-64]=(short)(fA[i][k]);
}short nC;
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
nC=s[i][k]; Cb=nC;
Cg=nC << 8;
Cr=nC << 16;
bgr=Cb | Cg |Cr;
Image5->Canvas->Pixels[i][k] = bgr;
}
void __fastcall TForm1::Button4Click(TObject *Sender)
{
//DFT G=FgF
int n;
TColor bgr;
TColor Cb,Cg,Cr;
float xx_r,xx_i;complex<float> g[128][128];
complex<float> F[128][128];
complex<float> G1[128][128];
complex<float> G[128][128];float fA[128][128],fP[128][128];for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
xx_r=nData[i][k];
complex<float> yy1(xx_r,0);
g[i][k]=yy1;
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
xx_r=cos(2*PI*i*k/128);
xx_i=-sin(2*PI*i*k/128);
complex<float> yy2(xx_r,xx_i); F[i][k]=yy2;
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<float> yy3(0,0);
G1[i][k]=yy3; for(int n=0;n<128;n++)
{
G1[i][k]=G1[i][k]+F[i][n]*g[n][k];
}
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<float> yy4(0,0);
G[i][k]=yy4;
for(int m=0;m<128;m++)
{
G[i][k]=G[i][k]+G1[i][m]*F[m][k];
}
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<double> d=G[i][k];
fA[i][k]=sqrt(pow(d.real(),2)+pow(d.imag(),2));
fA[i][k]=log(fA[i][k]);
if(fA[i][k]<0) fA[i][k]=0;
}
float fMax=0;
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
if(fMax<fA[i][k]) fMax=fA[i][k];
}
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
fA[i][k]=255*fA[i][k]/fMax;
}short s[128][128];
for (int i = 0; i < 64; i++)
for (int k = 0; k < 64; k++)
{
s[i+64][k+64]=(short)(fA[i][k]);
s[i][k]=(short)(fA[i+64][k+64]);
}for (int i = 0; i < 64; i++)
for (int k = 64; k < 128; k++)
{
s[i][k]=(short)(fA[i+64][k-64]);
s[i+64][k-64]=(short)(fA[i][k]);
}short nC;
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
nC=s[i][k]; Cb=nC;
Cg=nC << 8;
Cr=nC << 16;
bgr=Cb | Cg |Cr;
Image5->Canvas->Pixels[i][k] = bgr;
}void __fastcall TForm1::Button4Click(TObject *Sender)
{
//DFT G=FgF
int n;
TColor bgr;
TColor Cb,Cg,Cr;
float xx_r,xx_i;complex<float> g[128][128];
complex<float> F[128][128];
complex<float> G1[128][128];
complex<float> G[128][128];float fA[128][128],fP[128][128];for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
xx_r=nData[i][k];
complex<float> yy1(xx_r,0);
g[i][k]=yy1;
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
xx_r=cos(2*PI*i*k/128);
xx_i=-sin(2*PI*i*k/128);
complex<float> yy2(xx_r,xx_i); F[i][k]=yy2;
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<float> yy3(0,0);
G1[i][k]=yy3; for(int n=0;n<128;n++)
{
G1[i][k]=G1[i][k]+F[i][n]*g[n][k];
}
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<float> yy4(0,0);
G[i][k]=yy4;
for(int m=0;m<128;m++)
{
G[i][k]=G[i][k]+G1[i][m]*F[m][k];
}
}for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
complex<double> d=G[i][k];
fA[i][k]=sqrt(pow(d.real(),2)+pow(d.imag(),2));
fA[i][k]=log(fA[i][k]);
if(fA[i][k]<0) fA[i][k]=0;
}
float fMax=0;
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
if(fMax<fA[i][k]) fMax=fA[i][k];
}
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
fA[i][k]=255*fA[i][k]/fMax;
}short s[128][128];
for (int i = 0; i < 64; i++)
for (int k = 0; k < 64; k++)
{
s[i+64][k+64]=(short)(fA[i][k]);
s[i][k]=(short)(fA[i+64][k+64]);
}for (int i = 0; i < 64; i++)
for (int k = 64; k < 128; k++)
{
s[i][k]=(short)(fA[i+64][k-64]);
s[i+64][k-64]=(short)(fA[i][k]);
}short nC;
for (int i = 0; i < 128; i++)
for (int k = 0; k < 128; k++)
{
nC=s[i][k]; Cb=nC;
Cg=nC << 8;
Cr=nC << 16;
bgr=Cb | Cg |Cr;
Image5->Canvas->Pixels[i][k] = bgr;
}
[email protected]
小弟先谢了