Я пытаюсь использовать предварительно вычисленные значения, выводя их в файл заголовка и затем компилируя их для использования.
Предварительно рассчитанные значения представляют собой координаты куба, отображенные на сферу, а структура данных принимаетформа:
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, чтобы сначала было легче.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я хочу вернуть значения, происходит что-то странное и, как следствие, нарушения доступа.
Как показано на следующем изображении
Как видите, назначенное значение не соответствует значению структуры данных.Вместо значения для индекса [0][0][0][1]
дается значение индекса [0][0][1][0]
. здесь
Я понял это, потому что на более позднем этапе возникает неэкранированное исключение (нарушение доступа), я думаю, что это из-за проблемы с индексом, но не может быть уверенной.
Я не понимаю, что происходит, я неправильно разыменую указатель?
Любая помощь будет очень ценной, спасибо.
Вот код для этого раздела:
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);
}
}
}