Формула для выравнивания массива сетки с отрицательными значениями - PullRequest
0 голосов
/ 25 апреля 2020

В настоящее время я использую эту формулу, чтобы сгладить многомерный массив (x, y, z):

    array = new byte[GridSizeX*GridSizeY*GridSizeZ];

    index = x + y * GridSizeX+ z * GridSizeX* GridSizeY;

Мне было интересно, как бы я go заставил ее работать для отрицательных значений любого из x , y и z, поскольку индекс не может быть отрицательным значением, формула не работает, например, с ячейкой (-1,2,3).

Есть ли чистая формула, которая может принимать учитывать различные диапазоны x, y, z (также неоднородные диапазоны)?

Например, minX = -5, maxX = 7 / minY = -2, maxY = 3 // minZ = -4, maxZ = 6.

Спасибо!

1 Ответ

2 голосов
/ 25 апреля 2020

Если

x находится в [minX..maxX] диапазоне

y находится в [minY..maxY] диапазоне

z находится в [minZ..maxZ] диапазоне

Формула для с нуля index будет

index = (x - minX) + 
        (y - minY) * (maxX - minX + 1) +
        (z - minZ) * (maxX - minX + 1) * (maxY - minY + 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...