AW: collision detection
Moin Domi!
ich nehme an, du hast die Kreise alle in einem Array, dass du durchlaufen kannst und kannst diesen die Position x und y zuweisen.
Es hat jeder Kreis einen festen X-Wert. Y ist überall 0.
Zusätzlich gibst du dem Kreis einen Flag, ob seine Position schon festgelegt wurde:
'pos_fix' = FALSE (ich bin mir nicht sicher, aber kann sein, dass ich den später garnicht brauche, schreib grad einfach meine Gedanken dazu runter^^)
Du brauchst noch eine Funktion, die eine Kollision checkt, anhand von 2 koordinatenpaaren und 2 radien. function collision($x1, $y1, $r1, $x2, $y2, $r2)
mit ein bisschen mathematik sollte das zu schaffen sein, wenn nicht denk ich mir dazu in ner stillen Stunde mal was aus ;-)
jetzt durchläuftst du alle Kreise per foreach.
für jeden kreis addierst du so lange einen Y-Wert bis deine collision-Function FALSE sagt. Also keine Kollision mehr stattfindet. Der Kollisionscheck passiert dabei mit allen Kreisen, die pos_fix = TRUE haben, also schon im Weg liegen ;-)
Wenn keine Kollision mehr stattfindet, du also einen freien Platz gefunden hast, setzt du pos_fix = TRUE und springst zum nächsten Kreis.
Sollte so funktionieren, bitte bescheid sagen, wenn ich irgendwo schief gedacht hab :-)
MfG
Carsten
|