Преобразование координат (x, y, z) в один индекс, который минимизирует «расстояние» элементов до соседей - PullRequest
3 голосов
/ 03 февраля 2012

Если у вас есть трехмерное пространство фиксированного размера (N) с интегральными координатами в [0, N [, как вы можете преобразовать эти (x, y, z) координаты в один линейный индекс [0, N * N] * N [, где среднее расстояние одной координаты (x, y, z) до ближайших соседей (x-1, y, z), (x + 1, y, z), ... (26 соседей) равно минимизировано, по сравнению с упрощенной формулой "индекс = х + N * у + N * N * z"?

Дорогая формула является приемлемым решением в моем случае, потому что N фиксировано и не слишком велико, поэтому я могу вычислить отображение один раз и кэшировать результат, если это дорого.

Причина, по которой мне это нужно, заключается в том, что я пытаюсь сжать одни и те же значения на основе близости, и поэтому размещение соседних значений рядом в массиве повышает степень сжатия.

Если бы вы могли указать на некоторый код Java, было бы еще лучше ...

...