2B dünyamdaki bir noktadan kenarların sarıldığı başka bir noktaya (asteroitler vb.) En kısa mesafe yönünü bulmam gerekiyor. En kısa mesafeyi nasıl bulacağımı biliyorum ama hangi yönde olduğunu bulmakta zorlanıyorum.
En kısa mesafe şu şekilde verilir:
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));
Dünya örneği
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
Diyagramda kenarlar: ve - ile gösterilmiştir. Ben de sağ üstte dünyanın sarılmış bir tekrarı gösterdim. Yönü S'den T'ye derece olarak bulmak istiyorum. Öyleyse en kısa mesafe T'nin sağ üst tekrarıdır, ancak S'den sağ üstte tekrarlanan T'ye kadar derecedeki yönü nasıl hesaplayabilirim?
Hem S hem de T'nin pozisyonlarını biliyorum ama sanırım tekrarlanan T'nin pozisyonunu bulmam gerekiyor, ancak 1'den fazla var.
Dünyanın koordinatlar sistemi sol üstte 0,0 ile başlar ve yön için 0 derece Batı'da başlayabilir.
Bu çok zor olmamalı gibi görünüyor ama bir çözüm bulamadım. Umarım birisi yardımcı olabilir mi? Herhangi bir web sitesi takdir edilecektir.