Indici di ordine di riga-Major
-
13-11-2019 - |
Domanda
Attualmente sto lavorando al progetto di dove le mappe del terreno 2D vengono salvate in un array unidimensionale. Ogni blocco nella mappa è indicizzato da coordinate XY. Quindi, per salvare la mappa in un array unidimensionale, ho usato il metodo dell'ordine di riga-Major (http://en.wikipedia.org/wiki/row-major_order) per convertire le coordinate XY in un singolo valore dell'indice (che mi ha permesso di mettere il blocco in un array).
Ora, il mio problema è come lo converto? Ho un numero univoco che devo convertire in coordinate XY. Qualsiasi aiuto sarebbe apprezzato. ^^
Soluzione
Per calcolare gli indici dovresti usare qualcosa del genere:
index = X + Y * Width;
Quindi, per invertire questo puoi sfruttare il troncamento della divisione intera per ottenere y, e poi x è proprio ciò che è rimasto dopo ciò che Y "ha usato":
Y = (int)(index / Width)
X = index - (Y * Width)