Hex Felder Streckenberechnung
-
Hallo,
ich habe ein feld was aus HexFeldern besteht. Nun will ich die strecke zwischen den Punkten S und E berechnen.
Als erstes ist mir der Dijkstra-Algorithmus eingefallen, jedoch habe ich mich gefragt ob es da nciht eine effizientere methode gibt da alle diese HexFelder im gleichen abstand zu einander sind und jeder 6 Referenzen zu anderen Feldern hat. (es sind also alle felder mit allen über referenzen verknüpft, bzw. jeder dieser felder kennt nur seine 6 nachbarn)http://image-upload.de/image/Ke16Wr/f9ba6d8416.png
Hat da jemand einen Vorschlag bzw. kennt da einer einen Algorithmus der hier verwendung finden könnte
-
Wie gibst du die Koordinaten der Felder an? Darüber sollte sich was finden lassen.
-
Bashar schrieb:
Wie gibst du die Koordinaten der Felder an? Darüber sollte sich was finden lassen.
Es gibt keine Koordinaten der Felder, jedes feld hat folgende Struktur:
class HexFeld{ private: HexFeld Nord; HexFeld NordOst; HexFeld SuedOst; HexFeld Sued; HexFeld SuedWest; HexFeld NordWest; };
Als Startpunkt hat man lediglich die Referenz des Startfeldes. Zusätzlich hat man die Referenz des Zielfeldes.
Sollte ich vielleicht weitere Informationen den einzelnen Feldern hinzuzufügen ??
-
d3rbastl3r schrieb:
Sollte ich vielleicht weitere Informationen den einzelnen Feldern hinzuzufügen ??
Ich würde nichts hinzufügen, sondern stattdessen Koordinaten nehmen.
-
http://www-cs-students.stanford.edu/~amitp/gameprog.html#hex
http://keekerdc.com/2011/03/hexagon-grids-coordinate-systems-and-distance-calculations/
-
d3rbastl3r schrieb:
Es gibt keine Koordinaten der Felder, jedes feld hat folgende Struktur:
class HexFeld{ private: HexFeld Nord; HexFeld NordOst; HexFeld SuedOst; HexFeld Sued; HexFeld SuedWest; HexFeld NordWest; };
Das ist ja auch schon doof, weil ein einzelnes Hex Feld seine Nachbar per Value speichert, statt per Referenz/Zeiger. Angenommen, du hast zwei Felder f1 (oben) und f2 (unten) übereinander, dann ist f1.Sued nicht f2 und f2.Nord nicht f1.
-
DocShoe schrieb:
d3rbastl3r schrieb:
Es gibt keine Koordinaten der Felder, jedes feld hat folgende Struktur:
class HexFeld{ private: HexFeld Nord; HexFeld NordOst; HexFeld SuedOst; HexFeld Sued; HexFeld SuedWest; HexFeld NordWest; };
Das ist ja auch schon doof, weil ein einzelnes Hex Feld seine Nachbar per Value speichert, statt per Referenz/Zeiger. Angenommen, du hast zwei Felder f1 (oben) und f2 (unten) übereinander, dann ist f1.Sued nicht f2 und f2.Nord nicht f1.
Hups, sorry, ich meinte natürlich
class HexFeld{ private: HexFeld &Nord; HexFeld &NordOst; HexFeld &SuedOst; HexFeld &Sued; HexFeld &SuedWest; HexFeld &NordWest; };
Habs gerade mit java durcheinander gebracht, da wird das ganze auch ohne & per referenz gespeichert
Per Value zu speichern macht das hier 1. keinen sinn und 2. frisst massig performance ^^scrontch schrieb:
http://www-cs-students.stanford.edu/~amitp/gameprog.html#hex
http://keekerdc.com/2011/03/hexagon-grids-coordinate-systems-and-distance-calculations/
Ahh, danke, werde mir mal die sachen durchlesen
-
Ok, habe mir jetzt mal das system auf der homepage
http://keekerdc.com/2011/03/hexagon-grids-coordinate-systems-and-distance-calculations/ durchgelesen. Zum navigieren zwischen den einzelnen Feldern scheint das System ganz cool zu sein... danke xD