Berechnen Abstand zwischen zwei x/y-Koordinaten?
Ich würde gerne zur Berechnung der Entfernung zwischen zwei x/y-Koordinaten auf der Oberfläche der ein torus. So, das ist ein normales Gitter, das die Eigenschaft hat, dass seine Ecken und Seiten 'verbunden'. Zum Beispiel, auf einem raster von 500 x 500, der Punkt, an (499, 499) ist neben (0, 0) und der Abstand zwischen z.B. (0,0) und (0,495) sollte dann 5 sein.
Gibt es eine gute mathematische Art und Weise der Berechnung dieser?
- Ja, es ist. 🙂
- Sind Sie immer die Wahl der kürzesten Distanz oder sind Sie auf die Angabe einer Richtung? In anderen Worten, warum sollte der Abstand mit 5 statt 495, oder könnte es sein, dass entweder, je nachdem, wie Sie wollte, um die Linie zu zeichnen?
- Ja, es geht um die kürzeste Entfernung...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du suchst also die euklidische Distanz auf der zweidimensionalen Oberfläche eines torus, die ich sammeln.
wo
w
undh
sind die Breite (x) und Höhe (y) des Gitters, beziehungsweise.min(|x1 - x2|, w - |x1 - x2|) + min(|y1 - y2|, h - |y1-y2|)
Wenn Ihr Netz wickelt sich um an den Rändern gibt es vier Entfernungen zwischen den einzelnen Koordinate (in 2 Dimensionen). Ich nehme an, Sie wollen wissen, die kürzeste Entfernung.
Benutzen wir ein kleineres raster, die zahlen sind ein bisschen mehr überschaubar. Sagen das raster ist 10 x 10. Lassen Sie uns auch mit nur einer dimension der Einfachheit (in dem Fall gibt es dann nur zwei Wege), so wie Sie in Ihrem Beispiel. Sagen wir, wir haben die Punkte 0,2 und 0,6. Die zwei Abstände zwischen den Punkten sind d_1 = (6-2) = 4 und d_2 = (10-6) + 2 = 6, also in diesem Fall die kürzeste Strecke wäre, d_1.
Im Allgemeinen, Sie können Folgendes tun:
Dann mit Pythagoras' theorem, die kürzeste Entfernung zwischen zwei Punkten ist die Quadratwurzel der Summe der Quadrate der kürzesten Entfernungen in jede Richtung. Sie berechnen können, die anderen drei Strecken durch Berechnung den Satz des Pythagoras unter Verwendung der anderen Kombinationen von Entfernungen in jede Richtung.
Wie ein anderer poster gesagt hat, die Form gebildet wird, wenn Sie wickeln sich um die an den Rändern (für ein 2-dimensionales Gitter) ist ein torus, und ich denke, die Methode, die ich verwendet habe, oben ist die gleiche wie die Gleichung gegeben, hat aber den Vorteil, dass eine Erweiterung auf n-Dimensionen, falls erforderlich. Leider gibt es nicht wirklich eine einfache Visualisierung über 2 Dimensionen.
für Punkte (x1,y1) und (x2,y2), die Sie benötigen, zu berechnen 4 Entfernungen:
und dann das minimum dieser.