Saya perlu menemukan arah jarak terpendek dari satu titik di dunia 2D saya ke titik lain di mana ujung-ujungnya dibungkus (seperti asteroid dll). Saya tahu cara menemukan jarak terpendek tetapi saya berjuang untuk menemukan arahnya.
Jarak terpendek diberikan oleh:
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));
Contoh dunia
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
Dalam diagram, tepi ditunjukkan dengan: dan -. Saya telah menunjukkan pengulangan dunia yang dibungkus di kanan atas juga. Saya ingin menemukan arah dalam derajat dari S ke T. Jadi jarak terpendek adalah ke pengulangan kanan atas dari T. tetapi bagaimana saya menghitung arah dalam degreed dari S ke T yang berulang di kanan atas?
Saya tahu posisi S dan T tetapi saya kira saya perlu menemukan posisi T berulang tetapi ada lebih dari 1.
Sistem koordinat dunia dimulai pada 0,0 di kiri atas dan 0 derajat untuk arah bisa dimulai di Barat.
Sepertinya ini seharusnya tidak terlalu sulit tetapi saya belum dapat menemukan solusi. Saya harap ada yang bisa membantu? Setiap situs web akan dihargai.