Ich habe ein Programm, in dem ich Bälle kreiere, die herumspringen. Wenn zwei Bälle kollidieren, sollten sich beide in zwei kleinere Bälle teilen, die sich in verschiedene Richtungen bewegen. DieseJava. Bälle teilen sich nach einer Kollision und bewegen sich in verschiedene Richtungen.
ist, wie ich Kollision Griff
public boolean intersects (Ball b) {
double distance = Math.sqrt(Math.pow((this.x - b.x), 2) + Math.pow((this.y - b.y), 2));
if (this.size/2 + b.size/2 >= distance && !(this.equals(b))) {
return true;
} else return false;
Ich suche nach einer Idee, die entscheiden wird dazu beitragen, in denen kleinere Kugeln zu platzieren, so dass sie nicht sofort wieder kollidieren. Ich habe verschiedene Manöver ausprobiert, aber sie enden alle zu nahe beieinander, und alle fangen an, ein Hüpfen zu spalten und es wird ein Chaos. Hier
ist die Klasse-Ball
public Ball(double x, double y, double size, double dx, double dy) {
this.x = x;
this.y = y;
this.size = size;
this.dx = dx;
this.dy = dy;
Um die Kugeln zu bewegen ich die folgende
b.x = b.x + b.dx;
b.y = b.y + b.dy;
Für den Moment, wenn die Kugeln kollidieren, ich habe zwei Ball-Objekte. Ich kenne die Koordinaten ihrer Zentren: x
, y
, Geschwindigkeit dx
, mit dem sie entlang der x-Achse und die Geschwindigkeit bewegen dy
entlang der y-Achse
ich den Code auslassen, die die Sicht behandelt, weil ich im Grunde eine Notwendigkeit Lösung, wie man dx
, dy
, x
und y
für 4 Bälle ändert, damit alle von ihnen sich weg bewegen und nicht sofort zusammenstoßen.
Ich brauche keine Code-Lösung, sondern eine allgemeine Idee.
Ihr zweiter Vorschlag gibt mir tatsächlich eine Idee. Wenn ich den Punkt (Koordinaten) der Kreuzung bekomme, könnte ich 4 Kugeln um diesen Punkt legen und ihre dx und dy darauf basierend setzen. weil ich jetzt dx entsprechend der vorherigen Richtung des aktuellen Balls ändere, aber es berücksichtigt nicht die Position des anderen. – Diana