J'ai besoin de trouver la direction de distance la plus courte d'un point dans mon monde 2D à un autre point où les bords sont enveloppés (comme des astéroïdes, etc.). Je sais comment trouver la distance la plus courte, mais j'ai du mal à trouver la direction dans laquelle elle se trouve.
La distance la plus courte est donnée par:
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));
Exemple du monde
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
Dans le diagramme, les bords sont représentés par: et -. J'ai également montré une répétition enveloppée du monde en haut à droite. Je veux trouver la direction en degrés de S à T. Donc, la distance la plus courte est vers la répétition en haut à droite de T. mais comment puis-je calculer la direction en degrés de S vers le T répété en haut à droite?
Je connais les positions de S et de T mais je suppose que je dois trouver la position du T répété mais il y en a plus de 1.
Le système de coordonnées des mondes commence à 0,0 en haut à gauche et 0 degrés pour la direction pourrait commencer à l'ouest.
Il semble que cela ne devrait pas être trop difficile, mais je n'ai pas pu trouver de solution. J'espère que quelqu'un peut aider? Tous les sites Web seraient appréciés.