wie kbekomm ich eine funktion in ein array???
-
hallo, ich möchte eine parabell zeichnen lassen deren werte zuvor berechnet wurden. ich wollte dazu ein array mit 100 integern anlegen also 100 x.werte.... dann wollte ich mit GL_POINTS immer ein pixel zeichnen ich dachte mir ich packe die funktion:
array[i] = fkt( x, y ); // fkt ist: fkt( float &x, float &y ) { glBegin( GL_POINTS ); glVertex2d( x ,y ); glEnd(); }das ganze mit ner fir schleiffe durchlaufen um die parabel zu zeichnen... geht aber nicht ich bekommen den fehler "not allowed type" also wie kann ich des angehen????
-
int array[100]; for(UINT n = 0; n < 100; ++n) array[n] = fkt(x, y);int fkt(float &x, float &y) // Muss auch nen Integer sein wenn de nen Integer den Returnvalue der Funktion zuweisen willst -.- { glBegin(GL_POINTS); glVertex2d(x ,y); glEnd(); return 0; // Musst auch was returnen was der nehmen soll ... }
-
Du hast zwar ein Array und eine Funktion, aber die beiden nehmen nicht aufeinander bezug. Die Funktion rechnet immer mit denselben x/y-Werten, während das Array immer nur [i] verwendet.
Versuch es doch mal so:
if (x= 0, x < 200, x++)// nur als Beispiel { array[x] = fkt (x,y); }Damit ist jedem x-Wert des Arrays ein x-Wert der Funktion zugeordnet, und das Ergebnis steht an der Stelle, die durch das Array-x vorgegeben ist.
-
hi .. also wenn ich das ganz nun in der for-schleife loese gibts nen porb der abstand ist zu gross da die for schleiffe nur immer um eins erhöt hab ich nen abstand immer von 1LE das ist mir aber zu groß, wie bekomm ich den abstand kleiner? also so auf 0.1f oder 0.01f, ohne das ich glTranslatef( 0.0f, 0.0f -500.0f ) setze und dafuer 100000 werte nehme dann kackt ja mein rehcner irgendwann ab...
-
keiner ne idee ????
-
Dann rechne doch
int array[100]; for(UINT n = 0; n < 100; ++n) array[n] = fkt((n/10) , y);Gemeint ist: Du teilst n durch 10 oder was Du eben brauchst. Kann ja nicht so schwer sein. Oder Du setzt z= n/10 und berechnest Deine Formel mit z. Dann muß sie nur noch array[n] zugewiesen werden. Auf jeden Fall muß n in Deiner Formel irgendwo auftauchen.
-
Da solltest du aber lieber mit Gleitkomma-Typen arbeiten, sonst berechnest du zehnmal den selben Wert. Und natürlich mußt du nicht unbedingt die Schrittweite 1 verwenden:
for(float x=0;x<10;x+=.1) array[10*x] = fkt(x,y);