Reflektion eines Balles
Verfasst: 22.12.2010 12:39
Hallo, ich habe ein Programm geschrieben. Ein Ball wird bewegt in einem Fenster über die Edition von x- und y-Bewegungsvariablen. (In jeder Schleife wird die x- bzw. y-Position des Balles entsprechend dieser Variablen verschoben.)
Bisher habe ich bei Kollision mit den Wänden immer die jeweilige Variable mit -1 multipliziert, um so den Ball abprallen zu lassen.
Nun möchte ich ihn an einer schrägen Geraden abprallen lassen.
Hierfür muss ich jedoch die Bewegung umstellen, ich muss den Einfallwinkel berechnen, und die Bewegung schließlich vom Ausfallwinkel abhängig machen.
Nun wollte ich fragen, wie dies möglich ist.
Die totale Geschwindigkeit meines Balles kann ich mittels (x²+y²)^0,5 berechnen. Diese soll nach der Reflektion schließlich beibehalten werden. Von meiner Geraden ist lediglich die Steigung angegeben. Die Steigung der Ballbewegung ist folglich y/x.
Ich kann jedoch beim besten Willen keinen Weg finden, anhand des Ausfallwinkels wieder die Werte für x und y zu ermitteln.
Ich hoffe ihr könnt mir helfen, und eventuell Tipps geben, falls ich die Bewegung komplett umstellen müsste.
Danke im Vorraus,
kreeph
Bisher habe ich bei Kollision mit den Wänden immer die jeweilige Variable mit -1 multipliziert, um so den Ball abprallen zu lassen.
Nun möchte ich ihn an einer schrägen Geraden abprallen lassen.
Hierfür muss ich jedoch die Bewegung umstellen, ich muss den Einfallwinkel berechnen, und die Bewegung schließlich vom Ausfallwinkel abhängig machen.
Nun wollte ich fragen, wie dies möglich ist.
Die totale Geschwindigkeit meines Balles kann ich mittels (x²+y²)^0,5 berechnen. Diese soll nach der Reflektion schließlich beibehalten werden. Von meiner Geraden ist lediglich die Steigung angegeben. Die Steigung der Ballbewegung ist folglich y/x.
Ich kann jedoch beim besten Willen keinen Weg finden, anhand des Ausfallwinkels wieder die Werte für x und y zu ermitteln.
Ich hoffe ihr könnt mir helfen, und eventuell Tipps geben, falls ich die Bewegung komplett umstellen müsste.
Danke im Vorraus,
kreeph