Objektbewegung in C

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8858
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Objektbewegung in C

Beitrag von Xin » Sa Apr 08, 2017 12:04 am

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.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Objektbewegung in C

Beitrag von cloidnerux » Sa Apr 08, 2017 6:06 am

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

Code: Alles auswählen

(vec pos) + ((vec v) * 1/N)
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

Code: Alles auswählen

vec aus = - vec ein
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten