Mit QVektor Werte übergeben

Du bist neu in der Welt von C++? Dann schau hier herein!
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Mit QVektor Werte übergeben

Beitrag 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
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

was soll gehen????
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

Ob es geht, float Werte mit einem QVektor der methode zu übergeben. Also spezielle der genannten methode.
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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?
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag 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
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag 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??
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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....
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ja aber ich weiss nicht wie ich das machen soll. Also ohne QVektor. Wie kann ich denn die Werte sonst übergeben???
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

LERN PROGRAMMIEREN!!!!!!!!!!!!!!!!!!!!!!!!!!!!
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag 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.
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag 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
Hmm mir fällt nichts ein ^^
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

Weisst du, mit einem kaputten Kopf zur Arbeit zu gehen ist nicht leicht.
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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.
Antworten