Зависит от того, как ваши матричные элементы расположены в памяти.Вы используете x + y*dimx +z*dimx*dimy
, который действителен, если ваши значения были отображены в памяти с помощью чего-то вроде:
index = 0;
for (z = 0; z<dimz; ++z)
for(y = 0; y<dimy; ++y)
for(x = 0; x<dimx; ++x) {
matrix[index] = value;
index++;
}
Если вы представляете куб, состоящий из множества маленьких кубиков, вы идете по каждой линии кубов, изменяя xзатем вы переключаете линии с помощью y, а слои кубов с помощью z.
Где вы видели x*dimx*dimy + y*dimx + z
?Я не могу придумать 3D-матрицу, где вы можете использовать ее правильно, если только dimx = dimz.Я не думаю, что это правильно.