Vilka tekniska utmaningar st�lls ni inf�r, hur reagerar ni p� dem osv.? I b�sta fall kan vi byta en del tips.
Sj�lv b�rjar jag med att tala varmt om
quad tree!
Quad tree �r anv�ndbart n�r man g�r spatial detektering av saker som �r spridda l�ngs ett plan (t.ex. terr�ng), eftersom man via tr�ddatastrukturen snabbt kommer �t endast de f�rem�l som �r n�rmast. Det funkar genom att dela in terr�ngen i fyra partitioner/rektanglar som vardera refererar t.ex. de polygoner som finns inom varje rektangel. De rektanglar som inneh�ller m�nga polygoner delas p� samma s�tt i �nnu mindre rektanglar tills man n�r en viss uppl�sning.
Jag implementerade quad tree och h�r kommer lite siffror som visar hur v�rt det var i mitt fall. I antal detekteringsanrop kunde det se ut s� h�r, f�r detektion av 3D-figur i en j�mnt f�rdelad terr�ng:
Spelfigur inom partition:
660 calls to "DetectConv( Vector..."
0 calls to "DetectConv( Line..."
36 calls to "DetectArb( Vector..."Spelfigur mellan tv� partitioner:
1380 calls to "DetectConv( Vector..."
660 calls to "DetectConv( Line..."
72 calls to "DetectArb( Vector..."Antalet anrop minskade enormt efter att ha delat alla partitioner 3 g�nger, och det h�r var �nd� "brute force" utan vidare optimering:
Spelfigur inom partition:
72 calls to "DetectConv( Vector..."
0 calls to "DetectConv( Line..."
36 calls to "DetectArb( Vector..."Spelfigur mellan tv� partitioner:
150 calls to "DetectConv( Vector..."
72 calls to "DetectConv( Line..."
72 calls to "DetectArb( Vector..."Summa kardemumma �r allts� - implementera quad tree! I alla fall om ni har terr�ng med h�g/varierande detaljniv�. Kan ocks� vara intressant att j�mf�ra quad tree med en vanlig grid, som kan vara sv�rare att anpassa till polygoner av olika storlekar som �verlappar partitioner.