Niko: Kürzeste Verbindung zwischen 2 beliebigen Tabellenfeldern

Beitrag lesen

Hallo Zusammen!

Folgendes Problem:

Ich habe eine beliebig große Tabelle, der Einfachheit halber gehe ich hier mal von 4x4 Feldern aus. Die einzelnen Felder haben je eine eindeutige X- und Y-Koordinate.

Wenn ich nun ein Start und ein Zielfeld gegeben habe, möchte ich die auf direktem Weg dazwischenliegenden Felder (bzw deren Koordinaten)ermitteln.

Soweit kein Problem, sofern Start- und Zielfeld auf einer Höhe oder auf einer Horizontalen liegen. Auch wenn sie genau im 45° Winkel zueinander stehen sind die auf der Verbindungsgerade liegenden Felder leicht zu bestimmen.

Schwer wird es bei außerhalb dieser Spezialfälle liegenden Start- und Zielpunkten.

Als Verdeutlichung hier eine kleine Skizze:
http://neff.alfahosting.org/publicstuff/tabelle.png

Die farbigen S und Z Felder sind die Start- und Zielfelder, die rosa Pfeile stellen die direkte Verbindung dar und die grauen Pfeile markieren die dazugehörigen Felder, die ich gerne ermitteln würde.

Ich dachte an die Verwendung von Winkelfunktionen in Kombination mit dem Satz von Pythagoras, wobei sich allerdings einige Probleme ergeben:

-Division durch Null bei bestimmten Winkeln, dabei handelt es sich aber um die oben genannten Spezialfälle, die auch anders lösbar sind.
-Lücken zwischen den ermittelten Feldern wegen Rundungsfehlern
-2 Felder auf gleicher Höhe bevor ein neues Feld kommt.

Mit einigen geschickt gestrickten Bedingungen sollte man alle diese Probleme bewältigen können, aber momentan fehlt mir dazu noch ein konkreter Ansatz.

Generell erschient mir dieser Weg sehr aufwändig und mit vielen Unannehmlichkeiten und ausnahmen behaftet zu sein.

Kennt jemand eine elegantere Lösung oder kann mir einen JS Ansatz zu meinem Weg zeigen.
Vielen Dank schonmal im Vorraus.