Kollisionsabfrage schiefer Rechtecke

A

Andynymous

Gast
Hallo zusammen,

ich habe folgendes Problem:
Ich will auf einem einem JFrame Vierecke abbilden, was soweit auch funktioniert. Die Vierecke werden mithilfe der Maus auf dem Frame angelegt und über rechtsklick + ziehen lassen sie sich drehen, was ebenfalls ganz gut funktioniert.

Aber jetzt habe ich das Problem, dass ich eine Kollisionsabfrage einbauen will. Mir ist die Methode intersects() bekannt, doch berechnet sie natürlich nur ob die Vierecke sich schneiden für den Fall dass sie im 0° Winkel auf der Oberfläche aufgetragen werden. Das Rechteck "weiß" ja im Prinzip garnicht, dass es auf dem Frame mithilfe des AffineTransformers schräg dargestellt wird.

Darum meine Frage:
Gibt es eine Möglichkeit (Methode) um eine direkte Kollisionsanfrage von im Zwei-Dimensionalen Raum gedrehten Rechtecken durchzuführen.


Eine Möglichkeit die ich mir ausgedacht hatte war: Polygone zu erschaffen die das Viereck repräsentieren und die dann über intersects zu vergleichen, aber dann könnte ich ja gleich Polygone nehmen, anstatt Rectangles (die dann mit AffineTransformer gedreht werden).

Ich freu mich auf schöne Ideen

Vielen Dank im Vorraus.
 

Marco13

Top Contributor
Polygone und intersects wäre eine Möglichkeit. Die 4 Kanten jeweilst gegen die 4 anderen zu Schneiden (mit Line2D#intersects) vielleicht auch.

Theoretisch (!) könnte man die AffineTransforms auch einfach zu invertieren und, damit das eine "zurückgerechnete" Rechteck gegen das andere testen, aber das dürfte nur in wenigen Fällen Sinn machen.
 
A

Andynymous

Gast
Also ich würde wirklich gerne auf die Variante mit Polygonen verzichten und weiter Rectangles nutzen, weil ich die Lösung sehr schön finde.

Bei den Polygonen würde ich dann eine eigene Drehmethode einbauen, bei der über ein Drehmatrix der neue Punkt in Abhängigkeit zum Winkel berechnet wird.
 

OliverKroll

Aktives Mitglied
Zeig uns, was du schon hast, wenn du es so gut findest, daß du dabei bleiben möchtest und nur kleine Verbesserungen möchtest. ;)
 

Ähnliche Java Themen

Neue Themen


Oben