# Kollision abfragen



## Nick H. (28. Jun 2005)

ich hoffe diesmal ist es das richtige Board

also ich hab mehrere Kreise die über den Bildschirm wandern und an den Wänden abprallen
(die Wände sind ja fest also ist das ja ganz einfach)

jeder ball hat eine X und Y Koordinate, einen Radius und eine bestimmte Geschwindigkeit

aber woher weiß ich jetzt ob die Kreise aneinander prallen?
ich bekomms irgendwie nicht hin

hier ein Applet um das ganze zu veranschaulichen
get allerdings erst ab 5.0

http://cemoi.ce.funpic.de/Brunnen.html


nicht erschrecken ich hab noch keinen Buffer eingebaut :wink:


----------



## Illuvatar (28. Jun 2005)

Hm du könntest die Koordinaten in Oval2D Objekten spiechern und mit der contains-Methode auf Kollision testen.


----------



## tborc (29. Jun 2005)

> aber woher weiß ich jetzt ob die Kreise aneinander prallen?


Zwei Kreise Überschneiden sich wenn der Abstand der Mittelpunkte kleiner ist als die Summe der Radien. (Phytagoras)


```
public boolean hatUeberlappung(Kreis k)
 {          
            double dx = mp.x - k.getMP().x; // Abstände
            double dy = mp.y - k.getMP().y;

            dx = Math.abs( dx );      // Absolutwerte bilden
            dy = Math.abs( dy );

            double  d = r + k.getRadius();            

            if(d*d >= dx*dx+dy*dy) return true;
            else return false;
}
```

Am einfachsten (zu implementieren) dürfte es sein wenn du einfach jeden Kreis mit allen anderen testest.

gruss


----------



## Nick H. (29. Jun 2005)

genau so hab ichs jetzt auch gemacht
is mir dann auch eingefallen

das Problem war nur das ichs erstmal nicht hinbekommen hab den Abstand auszurechenen

aber jetzt hab ichs geblickt danke!

ich meld mich dann wieder


----------

