gpt4 book ai didi

c++ - 在 C++ 中访问预定义的 float 组时出现问题

转载 作者:搜寻专家 更新时间:2023-10-31 01:58:24 25 4
gpt4 key购买 nike

我试图通过将它们输出到头文件然后编译它们以供使用来利用预先计算的值。

预先计算的值是映射到球体上的立方体坐标,数据结构采用以下形式:

typedef float heightMapCubeFace[5][5][3];

我像这样分别定义每张脸:

    heightMapCubeFace face1 = {{{ -2.88675, -2.88675, -2.88675 }, { -3.38502, -3.38502, -1.44338 }, { -3.53553, -3.53553, 0 }, { -3.38502, -3.38502, 1.44338 }, { -2.88675, -2.88675, 2.88675}}, 
{{ -1.44338, -3.38502, -3.38502 }, { -1.69251, -4.38986, -1.69251 }, { -1.76777, -4.67707, 0 }, { -1.69251, -4.38986, 1.69251 }, { -1.44338, -3.38502, 3.38502}},
{{ 0, -3.53553, -3.53553 }, { 0, -4.67707, -1.76777 }, { 0, -5, 0 }, { 0, -4.67707, 1.76777 }, { 0, -3.53553, 3.53553}},
{{ 1.44338, -3.38502, -3.38502 }, { 1.69251, -4.38986, -1.69251 }, { 1.76777, -4.67707, 0 }, { 1.69251, -4.38986, 1.69251 }, { 1.44338, -3.38502, 3.38502}},
{{ 2.88675, -2.88675, -2.88675 }, { 3.38502, -3.38502, -1.44338 }, { 3.53553, -3.53553, 0 }, { 3.38502, -3.38502, 1.44338 }, { 2.88675, -2.88675, 2.88675}}
};

最后:

heightMapCubeFace * heightMapSaved[6] = {&face1, &face2, &face3, &face4, &face5, &face6};

最终数据结构会更大,我刚开始将其设置为 5x5 以简化操作。

我遇到的问题是当我想取回值时,发生了一些奇怪的事情,结果发生了访问冲突。

如下图image

如您所见,分配的值与数据结构的值不匹配。相反,索引 [0][0][0][1] 的值被赋予索引 [0][0][1][0] 的值。 here

我注意到这个是因为在稍后阶段抛出了一个未处理的异常(访问冲突),我认为这是因为这个索引问题但不能确定。

我不明白发生了什么,我是不是对指针的引用有误?

非常感谢任何帮助,谢谢。

这是该部分的代码:

    for(int i = 0; i < 6; i++)
{
for(int j = 0; j < heightMapRes; j++)
{
for(int k = 0; k < heightMapRes; k++)
{
float xCoord = *(heightMapSaved[i][j][k][0]);
float yCoord = *(heightMapSaved[i][j][k][1]);
float zCoord = *(heightMapSaved[i][j][k][2]);

float newValue = myModule.GetValue( xCoord, yCoord, zCoord);

heightMap.SetValue( j, k, newValue);
}
}
}

最佳答案

布局是 (heightMapSaved[6])[5][5][3] 而不是 (heightMapSaved[5][5][3][6])

关于c++ - 在 C++ 中访问预定义的 float 组时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4114180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com