В 2D-случае точка (x, y) в прямоугольнике с размерами (sx, sy) может быть представлена в одномерном пространстве линейным индексом n следующим образом:
n = x+y*sx
Преобразование 1D индекса n обратно в (x, y) работает следующим образом:
x = n%sx
y = n/sx
Для трехмерного случая точка (x, y, z) в поле с размерами (sx, sy, sz) может быть представлена в 1D как
n = x+(y+z*sy)*sx
и преобразован обратно в (x, y, z) следующим образом:
z = n/(sx*sy);
temp = n%(sx*sy);
y = temp/sx;
x = temp%sx;
Обратите внимание, что здесь "/" означает целочисленное деление (всегда округляет результат), а "%" - оператор по модулю.