# Gedrehte Rechtecke Kollision



## Bober (7. Mrz 2009)

Hallo,

ich möchte von gedrehten Rechtecken überprüfen ob diese mit einem anderen Rechteck oder einem Ball Kollidieren.
Die Rechtecke sind durch alle 4 punkte gegeben. Außerdem ist der Mittelpunkt, ursprüngliche Höhe und Breite, und der Drehwinkel gegen den Uhrzeigersinn bekannt.

Nun kommich einfach nicht darauf wie ich von Objekten abfragen kann ob diese Kollidieren.


----------



## Marco13 (7. Mrz 2009)

Bei 2 Rechtecken (r0,r1) reicht theoretisch die Überprüfung, ob r0 irgendeinen der Eckpunkte von r1 enthält, oder umgekehrt. Etwas allgemeingültiger (und vermutlich kaum weniger effizient) wäre die überprüfung, ob irgendeine Kante von r0 und irgendeine Kante von r1 sich schneiden.

Rechteck-Kreis: Da kann man für alle Kanten des Rechtecks den Punkt berechnen, der dem Kreismuttelpunkt am nächsten liegt (grob gesagt: Lot vom Kreismittelpunkt auf die Kante fällen), und dann prüfen, ob der Abstand zwischen diesem Punkt und dem Kreismittelpunkt kleiner als der Radius des Kreises ist).


----------



## Bober (7. Mrz 2009)

ok soweit ist es klar mir stellt sich jetzt nur die frage wie ich das in java verwirkliche ob sich die Kanten schneiden, da die rechtecke ja gedreht sind!


----------



## slawaweis (7. Mrz 2009)

Testen ob sich zwei Linien schneiden geht mit der Funktion:

Line2D (Java Platform SE 6)

Testen ob ein Punkt in einem Kreis oder Oval liegt, geht mit der Funktion:

Ellipse2D (Java Platform SE 6)

Viele weitere geometrische Funktionen lassen sich in *java.awt.geom* und *javax.vecmath* (ist nicht im JDK enthalten) finden. Weiterhin ist hier eine Hilfsklasse mit weiteren geometrischen Operationen:

Collection of geometry utility methods : Geometry2D Graphics GUIJava

Slawa


----------



## 0x7F800000 (7. Mrz 2009)

Marco13 hat gesagt.:


> Bei 2 Rechtecken (r0,r1) reicht theoretisch die Überprüfung, ob r0 irgendeinen der Eckpunkte von r1 enthält, oder umgekehrt.


Nun ja, wenn man immer annimmt, dass die rechtecke "dick genug" sind, bzw die zeitintervalle fein genug... Ansonsten, wenn irgendwo irgendwas zu schnell fliegt, werden sich die teile dauernd verhacken, etwa so:

```
A-----A
     |     |
B----+-----+----B
|    |     |    |
|    |     |    |
B----+-----+----B
     |     |
     |     |
     A-----A
```


----------

