Представлять трехмерный массив с использованием одномерного массива и находить соседей - PullRequest
0 голосов
/ 06 июня 2019

Мне нужно представить трехмерное ограниченное пространство с использованием одномерного массива.Мне также нужно преобразовать заданный одномерный индекс обратно в трехмерные координаты.

Я знаю способ преобразования трехмерных координат в одномерный индекс по формуле (width * height * z) + (width * y) + x.

  • Мне нужна формула для преобразования из одномерного индекса в трехмерные координаты.
  • Кроме того, как мне найти всех соседей точки (x,y,z) на расстоянии v (при условии, что x, y, z все изменяются с шагом 1)?

Изменить: я нашел способ для 1D-> 3D и 3D-> 1D преобразований.Я все еще пытаюсь выяснить, как найти соседей на заданном расстоянии «d».Наивный подход, который я пробую, состоит в том, чтобы варьировать x в диапазоне [x-v, x+v] (аналогично y, z) и генерировать различные комбинации.Но в этом есть определенные точки, которые будут на расстоянии, превышающем d .. (пример: если d=1, а заданная точка равна (0,0,0), то сгенерированная точка (1,1,1) не будет находиться на расстоянии 1, но немного больше.

...