Seite 1 von 1

kollisions routine

Verfasst: 09.03.2009 21:15
von gnasen
Hi,
es war aufwendiger als gedacht, aber ich habe meine Kollisionsroutine nun fertig.
Sie prüft sehr schnell ob sich beliebige Vielecke überschneiden und ist in PB ähnlicher Syntax geschrieben.

Vielleicht gibt es ja dann bald ein paar weniger Threads zum Thema :lol:

Beispiele, Readme und include sind im Paket

Features
-beliebige Vielecke erstellen
-drehen und verschieben
-schnelle Kollisionsprüfung zwischen den Vielecken
-PB ähnliche Syntax
-linux und windows kompatibel, 64bit noch nicht geprüft
-neu: erstellt Vieleck/Hitbox aus Sprite

Download: http://wwwhomes.uni-bielefeld.de/ddiffe ... lision.zip

Einfaches und gut verständliches Beispiel
Bild

Sandbox editor:
Bild

Performance check:
Bild

Funktionsweise werde ich vielleicht mal noch nachreichen, falls es wen interessiert.

Verfasst: 09.03.2009 22:31
von STARGÅTE
Auch wenn es vllt "Krümelkackerei" ist, möchte ich trotzdem ein paar Hinweise geben, bzg. der Procedure : _col_check_line

Du kannst bei Parallelen Linien nicht davon ausgehen das sie sich nicht schneiden,
Debug _col_check_line(0,0,10,10,10,10,20,20)
Diese Beiden linen schneiden sich genau in 10,10

Einfach die eine Linie "schräg" zu machen weil x1 und x2 gleich sind, führt auch zu fehlern:
Debug _col_check_line(0,0,0,10,1,10,1,0)
diese Beiden Linien liegen parallel neben einander, werden aber durch deine "sicherheit" zu einem Kreuz.

Ich habe selber schon LineLine-Collisionen geschrieben deswegen weiß ich wo es zu problemen kommt...


Habe deine beispiele getesten, laufen Bugfrei (innerhalb der Textzeit), Gute Arbeit :allright:

EDIT: Habe dir mal n PN zur deinem Beitrag geschickt!

Verfasst: 09.03.2009 22:55
von gnasen
ich gebs zu, in der Prozedur habe ich gepfuscht, da sonst unter dem Bruchstrich Null rauskommt. Die Abweichung ist glücklicherweise vernachlässigbar, aber unschön ist die Lösung.

Falls du eine schönere Umsetzung für Linienkollision hast, immer her damit ;)

Verfasst: 12.03.2009 01:35
von gnasen
Habe den neuen Kollisionscheck eingebaut und noch mal einiges am Gesamtablauf optimieren können.
Gerade wenn keine Kollision stattfindet hat sich die Geschwindigkeit für den Vergleich drastisch erhöht.

Freiwillige Tester vor :wink:

neuer Download
siehe ersten Post

neuer speedcheck
Bild

Verfasst: 12.03.2009 15:37
von kswb73
Ächz. Der Debugger macht dein Programm voll langsam. Bei "example_preformance.pb" war das Programm etwa 25* schneller ohne Debugger. Das ist doch nicht normal oder?

Verfasst: 12.03.2009 17:42
von Kaeru Gaman
kswb73 hat geschrieben:Ächz. Der Debugger macht dein Programm voll langsam. Bei "example_preformance.pb" war das Programm etwa 25* schneller ohne Debugger. Das ist doch nicht normal oder?
:?: für SpeedTests muss man IMMER der debugger ausschalten, sonst besitzen die keine Aussagekraft.
das fertige Produkt soll schließlich auch ohne Debugger laufen.

wie viel langsamer ein Programm mit Debugger ist, hängt von mannigfaltigen Faktoren ab.

Verfasst: 28.03.2009 13:17
von gnasen
auf Anfrage eines Users habe ich eine Funktion hinzugefügt, mit der man aus einem Sprite ein Kollisionsobjekt erstellen kann. Dies erleichtert die Arbeit mit Sprites ungemein.

col_import(sprite,transcolor,gridsize)

lautet der neue Aufruf. Download ist aktualisiert.

Edit: Zoom/Rotate hinzugefügt