Ich muss die kürzeste Entfernungsrichtung von einem Punkt in meiner 2D-Welt zu einem anderen Punkt finden, an dem die Kanten gewickelt sind (wie Asteroiden usw.). Ich weiß, wie man die kürzeste Entfernung findet, aber ich habe Mühe herauszufinden, in welche Richtung es geht.
Die kürzeste Entfernung ergibt sich aus:
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));
Beispiel der Welt
:
: T
:
:--------------:---------
: :
: S :
: :
: :
: T :
: :
:--------------:
Im Diagramm sind die Kanten mit: und - dargestellt. Ich habe oben rechts auch eine verpackte Wiederholung der Welt gezeigt. Ich möchte die Richtung in Grad von S nach T finden. Der kürzeste Abstand ist also die Wiederholung von T oben rechts. Aber wie berechne ich die Richtung in Grad von S nach der Wiederholung von T oben rechts?
Ich kenne die Positionen von S und T, aber ich nehme an, ich muss die Position des wiederholten T finden, aber dort mehr als 1.
Das Weltkoordinatensystem beginnt bei 0,0 oben links und 0 Grad für die Richtung könnten bei West beginnen.
Es scheint, dass dies nicht zu schwierig sein sollte, aber ich konnte keine Lösung finden. Ich hoffe jemand kann helfen? Alle Websites würden geschätzt.