вычисление трехмерных координат из уплощенного трехмерного массива - PullRequest
0 голосов
/ 03 июля 2018

У меня есть линейный индекс, сглаженный в главном порядке столбцов, и мне нравится возвращать трехмерные координаты [x, y, z]. Я нашел это для основной строки https://math.stackexchange.com/questions/19765/calculating-coordinates-from-a-flattened-3d-array-when-you-know-the-size-index, но не могу понять основной столбец?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

С учетом

sometype array[XSIZE][YSIZE][ZSIZE];

тогда как одномерный массив, тогда, если у вас есть x> = 0 и x = 0 и y = 0 и z

Index = ((x * YSIZE + y) * ZSIZE) + z;      // Row major order, C/C++
Index = ((z * YSIZE + y) * XSIZE) + x;      // Col major order

и для расчета индекса, учитывая x, y, z:

// For Row major order
z = Index % ZSIZE;
y = (Index / ZSIZE) % YSIZE;
x = Index / (ZSIZE * YSIZE);

// For Col major order
x = Index % XSIZE;
y = (Index / XSIZE) % YSIZE;
z = Index / (XSIZE * YSIZE);
0 голосов
/ 03 июля 2018

Если

index = x + (y + (z * ZSIZE)) * YSIZE 

тогда:

x = index % YSIZE
Y = ((index - x) / YSIZE) % ZSIZE
Z = (index - x - y*YSIZE) / (ZSIZE * YSIZE)
...