ฉันต้องการค้นหาทิศทางระยะทางที่สั้นที่สุดจากจุดหนึ่งในโลก 2 มิติของฉันไปยังอีกจุดที่ขอบถูกห่อ (เช่นดาวเคราะห์น้อย ฯลฯ ) ฉันรู้วิธีหาระยะทางที่สั้นที่สุด แต่ฉันพยายามหาทิศทางที่มันอยู่
ระยะทางที่สั้นที่สุดจะได้รับจาก:
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 องศาสำหรับทิศทางอาจเริ่มที่ตะวันตก
ดูเหมือนว่ามันจะไม่ยากเกินไป แต่ฉันก็ไม่สามารถหาทางออกได้ ฉันหวังว่าบางคนสามารถช่วยได้ เว็บไซต์ใด ๆ ที่จะได้รับการชื่นชม