Мне нужно представить трехмерное ограниченное пространство с использованием одномерного массива.Мне также нужно преобразовать заданный одномерный индекс обратно в трехмерные координаты.
Я знаю способ преобразования трехмерных координат в одномерный индекс по формуле (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, но немного больше.