Tôi cần tìm hướng khoảng cách ngắn nhất từ một điểm trong thế giới 2D của tôi đến một điểm khác nơi các cạnh được bọc (như các tiểu hành tinh, v.v.). Tôi biết cách tìm khoảng cách ngắn nhất nhưng đang loay hoay tìm hướng đi.
Khoảng cách ngắn nhất được đưa ra bởi:
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));
Ví dụ về thế giới
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
Trong sơ đồ, các cạnh được hiển thị với: và -. Tôi cũng đã thể hiện sự lặp lại của thế giới ở phía trên bên phải. Tôi muốn tìm hướng theo độ từ S đến T. Vì vậy, khoảng cách ngắn nhất là lặp lại trên cùng bên phải của T. nhưng làm thế nào để tôi tính hướng theo hướng từ S đến T lặp lại ở trên cùng phải không?
Tôi biết vị trí của cả S và T nhưng tôi cho rằng tôi cần tìm vị trí của T lặp lại tuy nhiên có nhiều hơn 1.
Hệ tọa độ thế giới bắt đầu từ 0,0 ở phía trên bên trái và 0 độ cho hướng có thể bắt đầu ở phía Tây.
Có vẻ như điều này không quá khó nhưng tôi chưa thể tìm ra giải pháp. Tôi hy vọng ai đó có thể giúp đỡ? Bất kỳ trang web sẽ được đánh giá cao.