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의 위치를 찾아야하지만 1보다 큽니다.
세계 좌표계는 왼쪽 상단에서 0,0에서 시작하고 방향으로 0 도는 서쪽에서 시작할 수 있습니다.
너무 어렵지 않아야하지만 해결책을 찾지 못했습니다. 누군가가 도울 수 있기를 바랍니다. 모든 웹 사이트에 감사하겠습니다.