Necesito encontrar la dirección de la distancia más corta desde un punto en mi mundo 2D a otro punto donde se envuelven los bordes (como asteroides, etc.). Sé cómo encontrar la distancia más corta, pero estoy luchando por encontrar en qué dirección está.
La distancia más corta viene dada por:
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));
Ejemplo del mundo
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
En el diagrama, los bordes se muestran con: y -. También he mostrado una repetición envuelta del mundo en la parte superior derecha. Quiero encontrar la dirección en grados de S a T. Entonces, la distancia más corta es a la repetición superior derecha de T. pero, ¿cómo calculo la dirección en grados de S a la repetida T en la parte superior derecha?
Conozco las posiciones de S y T, pero supongo que necesito encontrar la posición de la T repetida, sin embargo, hay más de 1.
El sistema de coordenadas del mundo comienza en 0,0 en la esquina superior izquierda y 0 grados para la dirección podría comenzar en el oeste.
Parece que esto no debería ser demasiado difícil, pero no he podido encontrar una solución. Espero que alguien pueda ayudar? Cualquier sitio web sería apreciado.