2
我試圖通過將它們輸出到頭文件然後編譯它們來使用預先計算的值。在C++中訪問預定義的浮點數組的問題
的預先計算的值被立方體共座標映射到球和數據結構採用的形式:
typedef float heightMapCubeFace[5][5][3];
我seperately定義像這樣每個面:
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
我撿到了這個,因爲在後面的階段引發了一個無法處理的異常(訪問衝突),我認爲這是因爲這個索引問題,但不能確定。
我不明白是怎麼回事,我解引用指針錯了嗎?
任何幫助將非常appriciated,謝謝。
下面是該部分代碼:
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);
}
}
}
取而代之的截圖,最好是張貼小的代碼片段,使重現該問題。 – 2010-11-06 17:42:24
沒有看到代碼就很困難(圖像對於代碼來說是不確定的)。您可能需要再次查看代碼,以查看是否在任何時候混合了兩個索引......發生在多維結構中。 – 2010-11-06 17:45:04
確定已轉發該循環的代碼。 – henryprescott 2010-11-06 17:50:34