![]() |
Re: Kollision zweier 2dim Polygonen.
Zitat:
|
Re: Kollision zweier 2dim Polygonen.
Liste der Anhänge anzeigen (Anzahl: 1)
leider funktioniert das bei folgendem nicht mehr: (siehe anhang?)
|
Re: Kollision zweier 2dim Polygonen.
und wenn du möchtest dass das schneller geht, solltest du dich mal über Trennungsachsen informieren ;) (Separation Axis)
|
Re: Kollision zweier 2dim Polygonen.
Zitat:
|
Re: Kollision zweier 2dim Polygonen.
Delphi-Quellcode:
wenn ich mich richtig erinnere musst du für die Resulatat Region RgnC ein Region Handle erzeugen. CombineRgn() macht dies nicht für dich.
....
RgnA := CreatePolygonRgn(TestA,3,Winding); RgnB := CreatePolygonRgn(TestB,3,Winding); RgnC := CreateRectRgn(0,0,0,0); .... du könntest also auch so arbeiten
Delphi-Quellcode:
sprich inplaced in Region A.
RgnA := CreatePolygonRgn(TestA,3,Winding);
RgnB := CreatePolygonRgn(TestB,3,Winding); try case CombineRgn(RgnA, RgnA, RgnB, RGN_AND) of end; finally ... end; Gruß Hagen |
Re: Kollision zweier 2dim Polygonen.
Ich hab es jetzt so gemacht, wie es in der aller ersten Antwort angedeutet war:
Zitat:
Hab davor noch eine BoundingBox-Collision geschaltet. Die BoundingBox zu berechnen geht ja einfach. Man geht einfach das Polygon durch und ermittelt MinX, MaxX, MinY, MaxY. Damit fallen schon mal viele Kollisionen für die relativ Aufwändige Schnittpunktberechnung weg. Was sich im Vergleich zu der Windows API Funktion aber nur einen Bruchteil braucht. Hier hab ich es mit Hilfe von Vektoren gemacht. Die meiner Meinung nach schnellte Funktion. Nun möchte ich meine Objekte aber noch in einen Quadtree speichern. Da ich mitunter mal > 10000 Objekte habe. Ich kapiere dort allerdings das Vorgehen nur wage. Für einzelne Punkte kann ich mir es noch vorstellen. Aber wie sieht das mit Polygonen aus. Betrachtet man da nur den Startpunkt? Kann mir jemand mal erklären, wie man bei einem Quadtree seine Knoten anordnet? Oder ein gutes Tutorial hier verlinken. Finde nämlich immer nur ausführliche wissenschaftliche Artikel, welche ich kaum verstehen kann. Gruß Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz