Devo trovare la direzione della distanza più breve da un punto del mio mondo 2D a un altro punto in cui i bordi sono avvolti (come asteroidi, ecc.). So come trovare la distanza più breve ma faccio fatica a trovare in quale direzione si trova.
La distanza più breve è data da:
int rows = MapY;
int cols = MapX;
int d1 = abs(S.Y - T.Y);
int d2 = abs(S.X - T.X);
int dr = min(d1, rows-d1);
int dc = min(d2, cols-d2);
double dist = sqrt((double)(dr*dr + dc*dc));
Esempio del mondo
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
Nel diagramma i bordi sono indicati con: e -. Ho mostrato anche una ripetizione avvolta del mondo in alto a destra. Voglio trovare la direzione in gradi da S a T. Quindi la distanza più breve è la ripetizione in alto a destra di T. ma come faccio a calcolare la direzione in gradi da S alla T ripetuta in alto a destra?
Conosco le posizioni di S e T, ma suppongo di dover trovare la posizione della T ripetuta, tuttavia più di 1.
Il sistema di coordinate dei mondi inizia da 0,0 in alto a sinistra e 0 gradi per la direzione potrebbe iniziare a ovest.
Sembra che questo non dovrebbe essere troppo difficile ma non sono stato in grado di trovare una soluzione. Spero che qualcuno possa aiutare? Tutti i siti Web sarebbero apprezzati.