I need to extract a 4D position from a 1D array. I can see how it goes for 2D and 3D but I'm having a hard time wrapping my head around the 4th dimension..
For 2D:
int* array = new int[width * height];
int index = y * width + x;
int x = index / height
int y = index - x * height;
For 3D:
int* array = new int[width * height * depth];
int index = z * width * height + y * width + z;
int x = index / (height * depth);
int y = index - (x * height * depth) / depth;
int z = index - (x * height * depth) - (y * depth);
For 4D ?
int* array = new int[width * height * depth * duration];
int index = w * width * height * depth + z * width * height + y * width + w;
int x = index / (height * depth * duration);
int y = ??
The indexing formula is given by the multiplication of any given dimension value with the product of all the previous dimensions.
So for 4D
The general formula being of the form