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度から西から始まります。
これはそれほど難しくないはずですが、解決策を見つけることができませんでした。誰かが助けてくれるといいのですが?すべてのウェブサイトをいただければ幸いです。