# BoundingBox ist nicht bündig am Objekt



## Marti (19. Feb 2010)

Hallo. Ich habe gestern mal die BB meiner Spielobjekte angeschaut, und war dann doch recht erstaunt.

Im nicht rotierten, sieht alles völlig in Ordnung aus: (die BB umschließt das Objekt)






Wenn ich das Objekt allerdings um 30 Grad nach rechts drehe, dann siehts folgendermaßen aus:






Die BB umschließt das Objekt nicht mehr bündig. Ich habe dann gestern gerätselt und gerätselt und dachte irgendwas an den Berechnungen kann nicht stimmen. Dann auf einmal klar: Alles Berechnungsgrundlage für die BB dienen ja nach wie vor die Breite und Höhe des Bildes.

Auf dem Bild wird klar, was das bedeutet:





Es ist also im Grunde alles in Ordnung.

Nun dachte ich mir, dass evtl. ja doch einen eleganten Weg gäbe, die BB dennoch kleiner zu bekommen um eben diesen Platz einzusparen, markiert durch die roten Linien.





Ich dachte mir, dass man durch das auslesen des Bildinhaltes der BB, die BB stückweise kleiner machen könnte. Also spalten - bzw. zeilenweise auslesen um die BB,falls keine Pixel des Bildes dort sind, an dieser Stelle kleiner werden kann. 

Aber ich denke, das ist auch mal wieder zu umständlich und ich sollte es einfach so lassen?
Eigentlich bräuchte ich es nur für eine Sache. Die Objekte können das Spieldfeld verlassen, derzeit prüfe ich das über die BB, ob sich das Objekt noch auf dem Spielfeld befindet.


----------



## Steev (19. Feb 2010)

Die BoundingBox ist wie gesagt schon korrekt berechnet. Um eine korrektere Kollisionsberechnung zu ermöglichen würde ich mit Shapes arbeiten, die du synchron zum Objekt transformierst, wenn deine BB mit dem Objekt rotiert würde, dann hättest du auch eine korrektere Kollisionsberechnung.
Dazu brauchst du einfach lineare Gleichungen die prüft, ob und wo sich eine Linie mit einer anderen Linie überschneidet.
Für dein Problem sehe ich dafür aber keinen Grund, du könntest allerdings den Mittelpunkt deines Objektes abfragen oder Radial arbeiten, dann währe das ganze etwas genauer.

Gruß
Steev


----------



## Marti (19. Feb 2010)

Mit den Kollisionserkennungen bin ich recht zufrieden. Es wäre nur schön, etwas exakter zu bestimmen, wann das Objekt vollständig das Spielfeld verlassen hat, weil es dann entfernt wird.
Wenn ich den rotierten Mittelpunkt berechne, könnte ich dann über die Abstände zu meinen Objektecken
feststellen, wo die Begrenzungen meines Objektes liegen. meintest Du es in etwa so?
Meinst Du mit radial eine kreisförmige BB? 

Grüße Marti


----------



## Steev (19. Feb 2010)

Marti hat gesagt.:


> Meinst Du mit radial eine kreisförmige BB?



Ja, damit meinte ich eine kreisförmige BB, sozusagen eine BS ;-)

Optional kannst du das ganze ja auch über lineare Polygone abwickeln. Da habe ich zuhause ein Beispiel. Das könnte ich aber erst heute Abend posten 

Ich denke aber, dass das zu aufwendig ist für deine Problemstellung.

Gruß
Steev


----------



## Marti (19. Feb 2010)

Hallo Steev,

ich denke für das dieses Projekt wäre es vermutlich nicht nötig. Andererseits bin ich immer grundsätzlich daran interessiert etwas dazu zu lernen und hätte dann für kommende Zeiten schon mal einen guten Einstieg. Nunja wie Du möchtest. Soweit ich weiss, müssen die Polygone das Objekt möglichst genau umfassen, um dann nur noch zu überprüfen, ob sich die Polygone bzw. die Linien der Polygone schneiden. 

Gruß Marti


----------



## Steev (19. Feb 2010)

Hi Marti,



Marti hat gesagt.:


> Soweit ich weiss, müssen die Polygone das Objekt möglichst genau umfassen, um dann nur noch zu überprüfen, ob sich die Polygone bzw. die Linien der Polygone schneiden.



Ja, genauso läuft das auch. Was man halt beachten muss ist, dass man bei Transformationen die Transformations-Matrizen auf alle Punkte des Polygons anwendet.

Gruß
Steev


----------

