Seite 1 von 2

Mit QVektor Werte übergeben

Verfasst: 26. November 2008 13:06
von nici
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:

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;
}
Jetzt weiss ich nicht, ob das mit QVektor geht oder nicht?

lg

nici

Verfasst: 26. November 2008 14:08
von AuE
was soll gehen????

Verfasst: 26. November 2008 14:23
von nici
Ob es geht, float Werte mit einem QVektor der methode zu übergeben. Also spezielle der genannten methode.

Verfasst: 26. November 2008 14:28
von AuE
wenn die methode einen Übergabepara dazu bekommt, welcher float werte in nen qvector hat dann ja....

aber ich denke mal eher das sie in dem array da übergeben werden sollen oder?

Verfasst: 26. November 2008 14:30
von nici
ehrlich gesagt weiss ich es nicht. Man hat mir die Funktion hingeknallt und gesagt "hier mach mal, die Werte die in der Gui eingegeben werden, sollen dieser Funktion übergeben werden, und die Funktion liefert dann ein Bild zurück".

lg

Nurc

Verfasst: 26. November 2008 15:22
von AuE
jau dann musst wohl Werte in nen array packen. das g sieht aus als wäre es das wo deine daten rein sollen

Verfasst: 26. November 2008 15:26
von nici
bisher hab ich das so gemacht

Code: Alles auswählen

QVector<QDoubleSpinBox*> vector;
	for (int i=0; i<=40; i++) {
	vector.push_back(new QDoubleSpinBox);
	
	}
oder was meinst du. Und wenn ich einen Array dann übergeb, dann muss ich doch jedes Feld einzeln absprchen oder??

Verfasst: 26. November 2008 15:28
von AuE
nur so viel... dein schleifenzähler ist i.... der wird hochgezählt...... und du kannst doch den arrayindex den du ansprichst setzen....



btw.,... du machst dir einen vector aus doublespinboxes??????????????????????????

so geht das ja mal gar net....

Verfasst: 27. November 2008 09:21
von nici
ja aber ich weiss nicht wie ich das machen soll. Also ohne QVektor. Wie kann ich denn die Werte sonst übergeben???

Verfasst: 27. November 2008 10:01
von AuE
LERN PROGRAMMIEREN!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Verfasst: 27. November 2008 10:07
von nici
Ohh man bist du drauf, schlecht geschlafen oder was. Wenn du net antworten willst dann mach es auch nicht, schreib aber auch nicht so unnötige Sachen ja.

Verfasst: 27. November 2008 10:20
von AuE
das ist nicht unnötg das ist der Grund warum du hier so viele threads hast.

Sorry wenns hart klingt aber du fragst hier echt nach den Basic´s

Verfasst: 27. November 2008 10:24
von nici
der Grund weil ich es nicht weiss, ist dass ich völlig verwirrt bin in letzer Zeit (Familiäre Probleme) und nicht gleich auf die Lösung komme und dann noch verwirrter werde. Und deswegen frag ich lieber noch mal nach, verstehst du.

lg

nici

Verfasst: 27. November 2008 10:29
von nici
Weisst du, mit einem kaputten Kopf zur Arbeit zu gehen ist nicht leicht.

Verfasst: 27. November 2008 10:32
von AuE

Code: Alles auswählen

void phaseplate(FFTW_REAL *bild,float g[],float lambda,float alpha,int dimx, int dimy)
die funktion will ein float array haben (mit den Werten aus deinen Spinn Boxen)

Also muss du die Werte deiner Spinn Boxes in ein float array packen.

http://tutorial.schornboeck.net/arrays.htm

hier siehst du ein gutes Beispiel wie man mit arrays arbeitet.

Du musst dann in der Schleife die Werte deiner Spinnboxes in das Array eintragen.