ich habe auf meinem zweiten Tab 40 DoubleSpinBoxes. Die Werte die dort eingetragen werden, möchte an eine Funktion weiter geben, die mir ein Arbeitskollege liefern musste.
Funktion:
Code: Alles auswählen
void phaseplate(FFTW_REAL *bild,float g[],float lambda,float alpha,int dimx, int dimy)
/* Berechnet eine Phasenplatte für Fehler <= 7. Ordnung (6.+7. Ord. nur teilweise). */
{
int i,j,i1,j1,midx,midy,run=0;
float par,dx,dy,dplus,rq,ax,ay,alp,APERTQU,axq,ayq,arq,adq;
FFTW_REAL s;
par=2*M_PI/lambda; /* Wellenlängenparameter */
midx=dimx/2;
midy=dimy/2;
APERTQU=APERT*APERT;
dx=0;
dy=0;
dplus=0;
alp=alpha/APERT;
for(i1=0;i1<dimy;i1++)
{for(j1=0;j1<dimx;j1++)
{
i=i1-midx;
j=j1-midy;
rq=i*i+j*j;
/* Aperturradius *APERT* Pixel */
if(rq<=APERTQU)
{
ax=i*alp;
ay=j*alp;
axq=ax*ax;
ayq=ay*ay;
arq=axq+ayq;
adq=axq-ayq;
s=axq/2*(g[0]+g[1])+ayq/2*(g[0]-g[1])+ax*ay*g[2];
s+=arq*(ax*g[3]-ay*g[4]);
s+=(axq/3-ayq)*ax*g[5]-(ayq/3-axq)*ay*g[6];
s+=arq*(arq/4*g[7]+(axq-ayq)*g[8]-2*ax*ay*g[9]);
s+=(arq*arq/4-2*axq*ayq)*g[10]+(axq-ayq)*ax*ay*g[11];
s+=arq*arq*(ax*g[12]-ay*g[13]);
s+=arq*((axq-3*ayq)*ax*g[14]+(ayq-3*axq)*ay*g[15]);
s+=(axq*axq/5-2*axq*ayq+ayq*ayq)*ax*g[16]+(axq*axq-2*axq*ayq+ayq*ayq/5)*ay*g[17];
s+=arq*arq*arq/6*g[18];
s+=arq*arq*(adq*g[19]-2*ax*ay*g[20]);
s+=arq*((adq*adq-4*axq*ayq)*g[21]+4*adq*ax*ay*g[22]);
s+=(adq*adq*adq/6-2*adq*axq*ayq)*g[23]+(adq*adq-axq*ayq/.75)*ax*ay*g[24];
s+=arq*arq*((axq-3*ayq)*g[27] + (ayq-3*axq)*g[28]);
s+=arq*arq*arq*arq/8*g[33];
s+=arq*(adq*(adq*adq-12*axq*ayq)*g[38]-ax*ay*(6*adq*adq-8*axq*ayq)*g[39]);
s=par*s;
bild[run]=s;
}
else
{
bild[run]=0;
}
run++;
}
}
return;
}
lg
nici