Objektbewegung in C
- Xin
- nur zu Besuch hier
- Beiträge: 8862
- Registriert: Fr Jul 04, 2008 11:10 pm
- Wohnort: /home/xin
- Kontaktdaten:
Re: Objektbewegung in C
Wenn Du Dich nur auf der X-Achse hin und her bewegst, musst Du mit dem Aufprall eigentlich doch nur die X-Bewegung negieren?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.
- cloidnerux
- Moderator
- Beiträge: 3125
- Registriert: Fr Sep 26, 2008 4:37 pm
- Wohnort: Ram (Gibts wirklich)
Re: Objektbewegung in C
Ohne deine Code angeschaut zu haben, als Denkansatz:
Du "updates" dein Spielfeld N mal pro Sekunde, was deinen "Frames per second" entspricht. Gehen wir von zeitlich equidistanten Frames aus, hast du eine Bewegung um
weil N ja 1/s ist. vec pos steht für den Positionsvektor(x,y koordinate) und vec v für den Bewegungsvektor, daher die Änderungen pro Zeit in x und y Richtung.
Ein Richtungswechsel durch aufprall an der Wand entsteht jetzt also anschaulich durch invertieren der x-Komponente deines Bewegungsvektors, da der Ball sich in die entgegen gesetzte Richtung bewegen soll.
Einfallswinkel = Ausfallwinkel ist ja anschaulich eine Spiegelung entlang der X-Achse, es ist offensichtlich, dass dies durch invertieren der y-Komponente erreicht wird.
Daraus ergibt sich dein Ausfalls-vektor zu
Du "updates" dein Spielfeld N mal pro Sekunde, was deinen "Frames per second" entspricht. Gehen wir von zeitlich equidistanten Frames aus, hast du eine Bewegung um
Code: Alles auswählen
(vec pos) + ((vec v) * 1/N)
Ein Richtungswechsel durch aufprall an der Wand entsteht jetzt also anschaulich durch invertieren der x-Komponente deines Bewegungsvektors, da der Ball sich in die entgegen gesetzte Richtung bewegen soll.
Einfallswinkel = Ausfallwinkel ist ja anschaulich eine Spiegelung entlang der X-Achse, es ist offensichtlich, dass dies durch invertieren der y-Komponente erreicht wird.
Daraus ergibt sich dein Ausfalls-vektor zu
Code: Alles auswählen
vec aus = - vec ein
Redundanz macht wiederholen unnötig.
quod erat expectandum
quod erat expectandum