Ball Ball Kollision physikalisch korrekt

dome385

Mitglied
Hallo Leute,
bin derzeit in meinem Studium und als Abgabe sollen wir eine physikalisch korrekte Ballsimulation programmieren.
Bin jetzt schon ziemlich weit hab aber noch ein Problem mit der Ball Ball Kollision.
Bisher sieht es so aus:
Java:
public void kollisionsVelocity(Ball ball, Ball nebenball){

        ball.setCenterX(ball.getxPos());
        nebenball.setCenterX(nebenball.getxPos());
        ball.setCenterY(ball.getyPos());
        nebenball.setCenterY(nebenball.getyPos());

        double normaleX = ball.getCenterX() - nebenball.getCenterX();
        double normaleY = ball.getCenterY() - nebenball.getCenterY();
        double normaleXn = normaleX / abstandKugeln(ball, nebenball);
        double normaleYn = normaleY / abstandKugeln(ball, nebenball);

        double tangenteX = -normaleYn; //Senkrecht zum normalenvektor
        double tangenteY = normaleXn;


        double tGeschwindigkeit1 = ball.getxVel() * tangenteX + ball.getyVel() * tangenteY;
        double tGeschwindigkeit2 = nebenball.getxVel() * tangenteX + nebenball.getyVel() * tangenteY;

        double nGeschwindigkeit1 = ball.getxVel() * normaleXn + ball.getyVel()*normaleYn;
        double nGeschwindigkeit2 = nebenball.getxVel() * normaleXn + nebenball.getyVel()*normaleYn;

        double n1 = 2* ball.getMass()*nGeschwindigkeit1 + nebenball.getMass()*nGeschwindigkeit2 / ball.getMass() + nebenball.getMass() - nGeschwindigkeit1;
        double n2 = 2* ball.getMass()*nGeschwindigkeit1 + nebenball.getMass()*nGeschwindigkeit2 / ball.getMass() + nebenball.getMass() - nGeschwindigkeit2;

        ball.setxVel(tangenteX * tGeschwindigkeit1 + normaleXn * n1);
        ball.setyVel(tangenteY * tGeschwindigkeit1 + normaleYn * n1);
        nebenball.setxVel(tangenteX * tGeschwindigkeit2 + normaleXn * n2);
        nebenball.setyVel(tangenteY * tGeschwindigkeit2 + normaleYn * n2);

Hab heute mit meinem Professor drüber gesprochen und er meinte vom Prinzip her ist das richtig aber damit werden nicht alle Fälle richtig abgedeckt.
Jetzt komm ich nicht weiter, welche Fälle meint er?
Vielleicht kann mir hier jemand weiterhelfen, bin langsam am verzweifeln.
 
Haben die Bälle am Anfang beide Geschwindigkeit oder einer bleibt still(Billiard Simulation)? Wen einer am Anfang bleibt still dann bekommt nur einer der Bälle negative Geschwindigkeit(der andere wird erst bei der Kollision beschleunigt) und nur wenn beide am Anfang <0 Geschwindigkeit
haben, nach der Kollision können beide negative Geschwindigkeit bekommen.
 

Zurück
Oben