我怎样才能确定一个面向方向的边界框(OBB)的瓷砖贴图中的哪个贴图?

我需要检测定向边界框和静态瓷砖地图之间的碰撞。 我的瓷砖地图类看起来像这样:

function Tilemap(width, height, tiles) { this.width = width; // Width of the map in tiles this.height = height; // Height of the map in tiles this.tiles = tiles; // 1D array containing tiles, grouped by row } Tilemap.prototype.getTile = function (x, y) { return this.tiles[y * this.width + x]; }; Tilemap.prototype.setTile = function (x, y, value) { this.tiles[y * this.width + x] = value; }; 

我的问题是这样的:我怎样才能确定一个OBB,表示为一个顶点数组,重叠的瓦片?

(我正在用JavaScript编写,但任何语言的答案将不胜感激。)

我想你可以做这样的事情:

 var x_min = Math.floor(v[0] / this.width), y_min = Math.floor(v[1] / this.height), x_max = Math.ceil(v[2] / this.width), y_max = Math.ceil(v[3] / this.height); 

在这种情况下,所有tile都来自getTile(x, y) ,其中xx_minx_max之间, v是您的select框。