BlueJ: Billarspiel, Kugeln stoßen sich ab?
Hey,
stehe vor einem kleinen Problem:
Ich arbeite gerade an einem Billard-Programm mit BlueJ und der Bibliothek sum.kern.
Habe fast alles fertig, nur dass sich die Kugeln abstoßen fehlt mir noch.
Ich würde jetzt als erstes eine Kennt-Beziehung einsetzen, aber wie schaffe ich es, dass dies umgesetzt wird: (pseudocode)
wenn Kugel1 Kugel2 berührt Kugel1 und Kugel2 bewegen sich weg
meine kugeln haben diese eigenschaften:
public Billardkugel(int pH, int pV, //Position der Kugel auf dem Bildschirm int pGroesse, //Größe der Kugel double pGeschwindigkeit, //Geschwindigkeit der Kugel, Reibung ist auch schon drin int pRichtung, //Richtung der Kugel Bildschirm pBildschirm, // die Kugel kennt den Bildschirm der Kontrolleinheit int pFarbe) // Farb erklärt sich glaube ich von selbst.
3 Antworten
Schau Dir mal diese Animation an:
Die Kraft wird einfach umgelenkt. Die bewegte Münze wird aber nicht ganz nach außen abgelenkt, sie wird des Schwungs wegen eine Bahn zwischen der theoretischen Kraftumlenkung und der ursprünglichen Richtung nehmen.
http://upload.wikimedia.org/wikipedia/commons/2/2c/Elastischersto%C3%9F2D.gif
Siehe auch en.wikipedia.org/wiki/Elastic_collision oder "elastischer Stoss".
Hier noch eine Lösung in Flash und etwas Hintergrund:
http://stackoverflow.com/questions/345838/ball-to-ball-collision-detection-and-handling
also ich arbeite da auch gerade in der schule dran und ich hab das einfach mit ner if bedingung im hauptprogramm gemacht wobei ich einfach den abstand der mittelpunkt berechnen lasse und wenn der kleiner bzw gleich der beiden radien zsmgerechnet ist dann stoßen sich die kugeln ab. nur das abstoßen funktioniert noch nicht ganz.
ein weiteres problem bei dieser lösung ist dass wenn man nun mehr als 2 kugeln verwenden möchte dann wird das ganze sehr viel rumschreiberei.
hat sich schon lange erledigt, aber danke für deine Antwort :) kriegst nen like^^
Was ist nun das konkrete Problem (außer, dass man Richtung & Geschwindigkeit besser als Vektor ausdrücken sollte)?
Ich will, dass die Kugeln, wenn sie aufeinanderprallen, wie bei einer echten Billardsimulation, abprallen.