Kokkupõrgete arvutamine ruudustiku abil
Selles loengus esitatakse täpsemaid meetodeid kokkupõrgete arvutamiseks :
collision
Kumer kujund

collision
Mittekumer kujund

Kokkupõrgete kontroll (aiult) piirdenelinurki kasutades töötab rahuldavalt vaid siis, kui objektid on kumerad või nii väikesed, et neid võib (kumera) piirdenelinurgaga lähendada. Geomeetrilist kujundit (spriiti) nimetatakse kumeraks, kui selle ükskõik milliseid kaht punkti ühendav sirglõik asub täielikult kujundis.

This browser does not understand canvas!
Keskpunkt ruudustikuga Nelinurk ruudustikuga

Objektide kokkupõrke arvutamine ruudustiku (grid) abil

Sageli tuleb kontrollida kokkupõrkeid struktuuriga, mis ise pole kumer, kuid koosneb paljudest alamosadest, mida saab lähendada piirdenelinurkadega.

Sellise alamosadest koosneva struktuuri saab lihtsamal juhul paigutada ekraanile korrapärase ruudustiku (grid) ruutudesse, salvestada iga ruudukese jaoks arv (0 või 1) mis näitab, kas ruudukeses on objekt ja kontrollida siis lõikumist selle kahemõõtmelise massiivi abil.

Näiteks puude ridadest moodustatud labürindi loomisel moodustatakse kahemõõtmeline massiiv map. Javascriptis on vaid ühemõõtmelised massiivid, kahemõõtmelise massiivi saamiseks peab lihtsalt massiivi iga elemendi kuulutama taas massiiviks. Kui labürindis on rl rida, vl veergu ja iga ruudu külg koosneb k puust, toimub algväärtustamine käskudega

map = [];
for(var i=0; i < vl*k+1;i++) //colums in virtual
    map[i]=[];
for(var i=0;i < vl*k+1;i++){
for(var j=0;j < rl*k+1;j++){
    map[i][j]=0;}
	}

Iga puu joonistamisel muudetakse ka vastavat massiivi map elementi: kui ruutu [i,j] joonistatakse puu, täidetakse map[i][j] = 1.

Kui ruudustiku ruudu laius/kõrgus on d0, saadakse kanvaa punkti (x,y) sisaldava ruudu indeksid i,j valemitega

var i = Math.floor(x/d0);
var j = Math.floor(y/d0);

Seega punktis (x,y) on kokkupõrge, kui map[i][j] = 1.

Loomulikult saab ruudustikku kasutada vaid siis, kui väikese objekti kiirus (pikslit/kaadris) on väiksem kui ruudu laius/kõrgus. Kui kiirus on suurem, võib objekt ruudust lihtsalt läbi hüpata ilma seda märkamata.