Se la griglia si avvolge attorno ai bordi, ci saranno quattro distanze tra ciascuna coordinata (per 2 dimensioni). Suppongo che tu voglia conoscere la distanza più breve.
Utilizziamo una griglia più piccola, i numeri sono un po 'più gestibili. Supponi che la griglia sia 10x10. Usiamo anche solo una dimensione per semplicità (nel qual caso ci saranno solo due distanze), proprio come nel tuo esempio. Diciamo che abbiamo i punti 0,2 e 0,6. Le due distanze tra i punti sono d_1 = (6-2) = 4 e d_2 = (10-6) + 2 = 6, quindi in questo caso la distanza più breve sarebbe d_1.
In generale, è possibile eseguire le seguenti operazioni:
- Per ciascuna coordinata:
- sottrarre il più piccolo dal numero maggiore
- se il risultato è maggiore della metà della larghezza della griglia la distanza più breve in questa coordinata è la larghezza della griglia meno il risultato
- se il risultato è meno della metà della larghezza della griglia, la distanza più breve in questa coordinata è il risultato
Quindi utilizzando teorema di Pitagora, la distanza più breve tra i due punti è la radice quadrata della somma dei quadrati delle distanze più brevi in ogni direzione. Puoi calcolare le altre tre distanze calcolando il teorema di Pitagora usando le altre combinazioni di distanze in ogni direzione.
Come un altro poster ha detto, la forma formata quando ci si avvolge attorno ai bordi (per una griglia bidimensionale) è un toroide e penso che il metodo che ho usato sopra sia lo stesso dell'equazione data ma abbia il vantaggio che può essere esteso a n-dimensioni, se necessario. Sfortunatamente non c'è una visualizzazione facile sopra le 2 dimensioni.
Sì, c'è. :-) –
Stai scegliendo sempre la distanza più breve o stai specificando una direzione? In altre parole, perché la distanza sarebbe 5 anziché 495, o potrebbe essere o, a seconda di come si voleva disegnare la linea? –
Sì, si tratta della distanza più breve ... – Ropstah