Mit QVektor Werte übergeben
Verfasst: 26. November 2008 13:06
Hallo,
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:
Jetzt weiss ich nicht, ob das mit QVektor geht oder nicht?
lg
nici
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