2010-11-06 69 views
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); 
      } 
     } 
    } 
+2

取而代之的截圖,最好是張貼小的代碼片段,使重現該問題。 – 2010-11-06 17:42:24

+0

沒有看到代碼就很困難(圖像對於代碼來說是不確定的)。您可能需要再次查看代碼,以查看是否在任何時候混合了兩個索引......發生在多維結構中。 – 2010-11-06 17:45:04

+0

確定已轉發該循環的代碼。 – henryprescott 2010-11-06 17:50:34

回答

3

佈局(heightMapSaved[6])[5][5][3](heightMapSaved[5][5][3][6])