我需要找到从2D世界中的一个点到边缘被包裹的另一点(例如小行星等)的最短距离方向。我知道如何找到最短的距离,但正在努力寻找它的方向。
最短距离由下式给出:
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));
世界的例子
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
在图中,边缘用:和-表示。我也已经在右上方显示了环绕的世界重复。我想找到从S到T的度数方向。因此,最短的距离是T的右上角重复。但是,如何计算从S到右上角的重复T的度数方向?
我知道S和T的位置,但是我想我需要找到重复的T的位置,但是那里不止一个。
世界坐标系从左上角的0,0开始,方向可能从West开始的0度。
看起来这应该不太难,但是我还没有找到解决方案。希望有人能帮忙吗?任何网站将不胜感激。