用C ++分割数组

时间:2013-12-21 20:01:10

标签: c++ arrays

我正在制作一个游戏,我有一系列花车,可以制作我用opengl放入的3D模型。我想要做的是分离x,y和amp; z坐标并使它们成为一个多维数组。我想这样做,所以我可以调整相对于地形的y位置。我在init函数中放置的for循环如下:

    for (int x = 0; x < sizeof(desert_scene_plainVerts); x++) {
    if (((x + 3)%3) == 0) {
        //x coord
        terrainxPos[x/3] = desert_scene_plainVerts[x];
    }
    else if (((x + 1)%3) == 0) {
        //z coord
        terrainzPos[(x-2)/3] = desert_scene_plainVerts[x];
    }
    else{
        //y coord
        terrainzPos[(x-1)/3] = desert_scene_plainVerts[x];
    }
}

我在这一行收到错误:

terrainzPos[(x-1)/3] = desert_scene_plainVerts[x];

错误如下:

Thread 1: EXC_BAD_ACCESS (code=2, address= 0x10 etc.)

有人知道我做错了吗。

1 个答案:

答案 0 :(得分:1)

假设您已正确声明terrainxPos[]terrainyPos[]terrainzPos[],那么您的逻辑看起来没问题。如果这些是vector s,那么请确保resize()正确。{/ p>

然而,你的循环可能更清晰,更容易推理如下:

for (int x = 0, v = 0; x < sizeof(desert_scene_plainVerts); x += 3, v++) {
    terrainxPos[v] = desert_scene_plainVerts[x + 0];
    terrainyPos[v] = desert_scene_plainVerts[x + 1];
    terrainzPos[v] = desert_scene_plainVerts[x + 2];
}