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:
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.
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.