ungenaue kreis-kollisionserkennung
-
hi,
habe mir folgenden code zur kollisionserkennung von zwei 2d-kreisen zusammengeschrieben:
if((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) <= (rad1 + rad2) * (rad1 + rad2)) { // kollision }
leider wird die kollision sehr ungenau erkannt. klar, eine gewisse ungenauigkeit gibt es, zumal ich die objekte nach größeren schritten erst wieder auf kollision prüfe. aber teilweise zeigt er auch kollisionen an, wo keine sind!?
hat jemand ne idee, woran das liegen könnte?
danke!
alex
-
welkchen typ haben die variablen?
-
bin ich doof. danke!
-
volkard schrieb:
welkchen typ haben die variablen?
hmm. wenn ichs mir jetzt nochmal überlege, findet dort doch gar keine division statt. also sind die nachkommastellen doch egal!? die vektorpositionen sind ja auch nur ganzzahlen.
woran könnte das denn noch liegen? kapiers echt nicht....
danke!
-
überläufe.
aber ich weiß ja noch nicht den typ deiner variablen. short ist schonmal zu klein.
und ich kenne die maximalen abstände nicht. sind sie immer unter 10000, sollte int reichen.
-
Gib dir doch mal die Werte raus, die eine falsche Kollision ergeben und auch die Zwischenschritte der Berechnung. Dann solltest du das schon sehen.
-
volkard schrieb:
überläufe.
aber ich weiß ja noch nicht den typ deiner variablen. short ist schonmal zu klein.
und ich kenne die maximalen abstände nicht. sind sie immer unter 10000, sollte int reichen.also die werte sind maximal 1000, eher ein bruchteil davon
dann lass ich mir die werte mal ausgeben...
-
und die typen?
-
sind int
ich hab den fehler aber gefunden. die kreise wurden durch eine ungenaue int-division einfach nur kleiner gezeichnet, als geprüft wurde