scheitere an linearer(?) Funktion
-
Hallo alle zusammen,
ich bastle gerade einen kleinen Experiement-Code, bei dem ganz einfach ein Punkt langsam auf einer Geraden wandern soll. (C++, OpenGl)
Vom Ausgangspunkt zum Endpunkt.
Entstehen soll eine Funktion, die die Koordinaten für den Weglauf berechnet, und die bei verschiedenen Geraden eingesetzt werden kann. Meine ersten Versuche sahen ungefähr so aus: Ich habe in jedem Schritt in der Hauptschleife auf die y-koordinate die steigung gerechnet und auf die x-koordinate einen festen wert(z.B. 0,001).
Nun schießt das Objekt, Punkt, wie auch immer, meilenweit am zielpunkt vorbei.
Verschiedenste Lösungen habe ich getestet, aber ich komme nicht weiter. Mein größtes Problem dabei: Die Geschwindigkeit soll konstant bleiben, die Richtung soll sich davon nicht beeinflussen lassen.
Langsam habe ich alles durch, ich hoffe hier bin ich richtig und jemand kann mir weiter helfen.
mfg
-
Wenn die Funktion rechnerisch hinhauen soll, musst du doch bei jedem Schritt x um eins inkrementieren, wenn du y um die Steigung erhöhst. Wenn's in langsameren Schritten vorwärts gehen soll, musst du halt Steigung und den x-Inkrement (ausgänglich 1) um einen konstanten Wert verkleinern.
-
So, hier habe ich einen ganz kleinen code fetzen:
nextpos.x=10.6f; //Zielpunkt
nextpos.y=0.1f;
test.x= 0.0f; //Position des Objekts
test.y= 0.0f;start.x=0.0f; //Start-punkt des Objekts
start.y=0.0f;[...]
//in jedem Durchlauf werden die Koordinaten so erweitert:
test.x+=0.01f;
test.y+=make_fit((nextpos.y-start.y)/(nextpos.x-start.x));damit kann vlt. jemand etwas anfangen, danke für posts, fragen, etc.
-
hi badestrand,
das habe ich gemacht: x als geschwindigkeit und y + steigung
aber es klappt nicht
ich habe sogar in einem dos-fenster 100 wertepaare anzeigen lassen, die sahen gut aus
-
smiley12 schrieb:
hi badestrand,
das habe ich gemacht: x als geschwindigkeit und y + steigung
aber es klappt nichtSo wie ich das sehe, erhöhst du x bei jedem Schritt um <1 und y um die Steigung. Es haut aber meines Erachtens nur hin, wenn du x bei jedem dazu-addieren der Steigung auch um genau 1 erhöhst.
In etwa so:Point start // Anfangsposition Point end // Zielposition Point cur // Position des Objektes (von 'current') Point incr // x- und y-Zuwachs für das Objekt float slow // Um wieviel das Objekt verlangsamt wird, je niedriger desto schneller, "normal" wäre 1 incr.x = 1 incr.y = (end.y-start.y) / (end.x-start.x) // Durchlauf: cur.x += incr.x / slow cur.y += incr.y / slow
-
Seltsam, mein Beitrag scheint nicht angekommen zu sein, dann halt noch mal
Ich habe nicht daran gedacht, dass increase von x immer >=1 sein muss und daran ist alles gescheitert, aber jetzt läuft alles wie geplant und ich kann weiter machen.
Gott sei Dank,
Dir auch
-
Smiley12 schrieb:
Gott sei Dank,
Dir auchHehe, gerne