[英]Splitting Array in C++
我正在制作一个游戏,并且有一系列的花车可以制作与opengl一起放置的3D模型。 我想做的是将x,y&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.)
有人知道我在做什么错吗?
假设您已经正确声明了terrainxPos[]
, terrainyPos[]
和terrainzPos[]
, terrainyPos[]
您的逻辑就可以了。 如果这些是vector
,请确保正确resize()
它们的resize()
。
但是,这样编写的循环可能更清晰,更容易推理:
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];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.