Entwickler-Ecke
Algorithmen, Optimierung und Assembler - hexagonale Nachbarschaft
Maric - Mo 15.11.10 20:26
Titel: hexagonale Nachbarschaft
Ich habe ein zweidimensionales Array mit Sechsecken und will wissen, ob es einen algorithmischen Trick gibt, mit dem ich in jeder der drei Richtungen (oben-unten,rechtsoben-linksunten,linksoben-rechtsunten) die benachbarten Felder feststelle. Oben-unten ist nicht schwer, einfach y Koordinate hoch bzw runterzählen, aber in den Schrägen ist das ja mehr oder weniger abwechselnd. Wenn mir außer mit mod 2 zu Arbeiten nichts übrig bleibt reicht auch ein nein.
alzaimar - Mo 15.11.10 20:35
Numerier sie doch einfach durch und schau nach der Gesetzmäßigkeit.
Kha - Mo 15.11.10 20:45
Maric hat folgendes geschrieben : |
Wenn mir außer mit mod 2 zu Arbeiten nichts übrig bleibt reicht auch ein nein. |
Besonders wenn es um Felder mit unbeschränktem Ausmaß geht, kann es eleganter sein, die "y-Achse" diagonal zu legen, aber wenn du sie schon als "senkrecht-alternierend" festgelegt hast - ja, dann hast du da quasi per definitionem ein mod 2 drin :) .
Jakob_Ullmann - Mo 15.11.10 20:51
Maric hat folgendes geschrieben : |
Ich habe ein zweidimensionales Array mit Sechsecken und will wissen, ob es einen algorithmischen Trick gibt, mit dem ich in jeder der drei Richtungen (oben-unten,rechtsoben-linksunten,linksoben-rechtsunten) die benachbarten Felder feststelle. Oben-unten ist nicht schwer, einfach y Koordinate hoch bzw runterzählen, aber in den Schrägen ist das ja mehr oder weniger abwechselnd. Wenn mir außer mit mod 2 zu Arbeiten nichts übrig bleibt reicht auch ein nein. |
Verstehe irgendwie nicht ganz das Problem. Wie sind die denn gelagert? So:
Quelltext
1: 2: 3:
| . . . . . . . + . . . . . . |
Du willst jetzt also z. B. wissen, welche Felder an das + angrenzen??
Maric - Di 16.11.10 20:44
ja genau so
@ Post vorher wenn ich die y Achse schräg lege, bringt mich das auch nicht weiter, weil die anderen beiden immer noch im 120 Winkel davon abstehen
ich kann das noch alles umstrukturieren, wäre also kein Problem wenn es eine Struktur gäbe in der sich das leicht bestimmen lässt (objekte mit Nachbarschafts-referenzen sind mir aber doch zu aufwändig)... dann her damit
Kha - Di 16.11.10 22:03
Maric hat folgendes geschrieben : |
@ Post vorher wenn ich die y Achse schräg lege, bringt mich das auch nicht weiter, weil die anderen beiden immer noch im 120 Winkel davon abstehen |
Natürlich, aber die Vektoren zu den einzelnen Nachbarn sind dann konstant und nicht mehr von der Zeile abhängig.
Martok - Di 16.11.10 22:11
Also sagen wir mal so: in meinen HexGames mache ich das so, dass ich die relativ längliche Funktion zur Berechnung der Nachbarn (naja, ein if halt was je nach Zeile unterschiedliche Richtungen geht) beim Map erstellen genau einmal aufrufe und jedem Tile eine Liste "Neighbors" gebe, die die (max. 6) Nachbarn enthält. Über die braucht man dann nur noch zu iterieren.
Hat sich bewährt...
Bei DGL [
http://wiki.delphigl.com/index.php/hexfeld] gibts auch was dazu.
Mr_Emre_D - Di 16.11.10 22:55
Voila, mir war langweilig!
Ich hoffe, dies ist die Antwort auf das Problem. Bin immernoch im Ungewissen darüber, was das eigentliche Problem ist; aber wie auch immer!
MfG
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!