初始化3D打字稿数组

时间:2020-04-10 14:57:25

标签: typescript

因此,此刻,我正在尝试创建二维网格以提高碰撞检测效率。

设置的基础非常简单,通过将对象的位置高度和宽度划分,我可以找到它们各自的“索引”,然后将值放在前两个坐标处的数组的第三维中。从理论上讲,这个想法行得通,但是我不确定为什么我的代码无法正常工作。

export class CollisionGrid {

widthSegment : number;
heightSegment : number;
grid : object[][][] = [];


constructor(height : number,  width : number, cellSize : number) {

    this.widthSegment = Math.round(width / cellSize);
    this.heightSegment = Math.round(height / cellSize);
}

addParticles(particles : Particle[]) : void {
    for(let particle of particles) 
    this.addParticle(particle);
}

addParticle(particle : Particle) : void {
    var ix = Math.round(particle.position.x / this.widthSegment);
    var iy = Math.round(particle.position.y / this.heightSegment);

    this.grid[ix][iy].push(particle); // This is the line throwing the error
}

queryGrid(position : ICoordinates) : object[] {

    const ix = Math.round(position.x / this.widthSegment);
    const iy = Math.round(position.y / this.heightSegment);

    return this.grid[ix][iy];
}

resetGrid() {
    this.grid = [];
}

}

因此,具体错误为: TypeError:无法读取未定义的属性“ 2” 属性“ 2”响应它不喜欢的2D索引之一。我不确定为什么会引发此错误。是因为我需要手动初始化嵌套数组吗?

任何帮助都将非常有帮助,谢谢。

0 个答案:

没有答案