¿Hay alguna forma de determinar matemáticamente un número de índice único para puntos 2D que aumente cuanto más me aleje del origen? No sé hasta dónde se extiende este sistema de coordenadas.
Estoy trabajando en un sistema en el que necesito acceso aleatorio a datos indexados por un punto 2D.
En otras palabras, necesito una función que siempre devuelva un único número entero dados los mismos dos números enteros, pero que no entre en conflicto con otros conjuntos de números. Piénsalo como un hash. Sin embargo, necesito que los índices generados aumenten a medida que aumenta la distancia desde el origen - esto es para que el crecimiento de mi índice se mantenga constante a medida que añado más datos.
EDITAR:
Aquí hay algunos datos generados procedimentalmente que funcionarían como solución. Simplemente necesito una función que puedo ejecutar en tiempo constante que produce algo al efecto de:
0, 0 = 0
-1, 0 = 1
0, -1 = 2
0, 1 = 3
1, 0 = 4
-1, -1 = 5
-1, 1 = 6
1, -1 = 7
1, 1 = 8
-2, 0 = 9
0, -2 = 10
0, 2 = 11
2, 0 = 12
-2, -1 = 13
-2, 1 = 14
-1, -2 = 15
-1, 2 = 16
1, -2 = 17
1, 2 = 18
2, -1 = 19
2, 1 = 20
-2, -2 = 21
-2, 2 = 22
2, -2 = 23
2, 2 = 24
-3, 0 = 25
0, -3 = 26
-3, -1 = 27
-3, 1 = 28
-1, -3 = 29
1, -3 = 30
-3, -2 = 31
-3, 2 = 32
-2, -3 = 33
2, -3 = 34
-3, -3 = 35