Хэш-код для трехмерных целочисленных координат с высокой пространственной когерентностью

это мой первый вопрос на этих форумах : )

Я пишу класс координат на Java для системы вокселей пространственного октодерева. Эти координаты не являются координатами с плавающей запятой, они представляют собой 4D целочисленные индексы в октодереве (3 нормальных измерения X, Y, Z и четвертое для глубины дерева). Все первые 3 значения являются шортами, последнее измерение — это байт. При фактическом использовании прямо сейчас используются только первые 11 битов шорт и только 3 бита байта, но это может быть изменено.

Сейчас я пытаюсь написать «хорошую» хеш-функцию для этого класса. Проблема, с которой я борюсь, заключается в том, что координаты часто будут использоваться в очень пространственных когерентных ситуациях (надеюсь, я использую правильную терминологию). Я имею в виду, что часто координата будет хешироваться вместе с ее ближайшими соседями и другими соседними координатами.

Существует ли эффективная практика, позволяющая заставить эти «близкие друг к другу» координаты создавать значительно отличающиеся хэш-коды?

9
задан Steven 25 March 2012 в 06:40
поделиться