Вам повезло: есть способ получить приличные кодовые координаты с высокой пространственной когерентностью, используя нечто, называемое Кривая Z-порядка .
Хитрость заключается в том, чтобы чередовать биты разных компонентов координат. Так что если у вас есть 3 8-битные координаты, такие как:
[XXXXXXXX, YYYYYYYY, ZZZZZZZZ]
Тогда закодированное значение z-кривой будет одним 24-битным значением:
XYZXYZXYZXYZXYZXYZXYZXYZ
При необходимости вы можете увеличить число битов или координат.
Это кодирование работает, потому что координаты, которые находятся близко в пространстве, будут иметь различия главным образом в битах младшего разряда. Таким образом, чередуя координаты, вы получаете фокусы различий в младших битах закодированного значения.
Еще одним интересным свойством является то, что младшие биты описывают координаты внутри кубов пространства. Таким образом, самая низкая 3-битная позиция адреса с 2x2x2 кубами, самая низкая 6-битная позиция адреса в 4 * 4 * 4 кубах, самая низкая 9-битная позиция в 8 * 8 * 8 кубов и т. Д. Так что это на самом деле довольно идеальная система для адресации -координаты в октрее.