Frage

Was ist der einfachste Weg, algorithmisch ein Hex-Raster zu zeichnen? Wie soll ich sie in Daten präsentieren?

Zum Beispiel in einem quadratischen Raster, konnte ich nur speichern x-y-Koordinaten ..

War es hilfreich?

Lösung

So Sechseck ist eine ordentliche Bibliothek für AS3-Spiele, hat es einige Sechseck-Klassen, die Macht handlich sein, bei Ihrem Recherche. diesem Artikel einige sehr schöne Details über Hexagon Fliesen in Flash hat .

Andere Tipps

Es gibt mehr Möglichkeiten Sechseckraster Koordinaten zu verwalten und die meisten von ihnen bestehen unintuitively auf sich x-y-Koordinaten zuordnen, die nur für die Darstellung von Bedeutung ist. Irgendeine Form von Polarkoordinaten ist in der Regel am besten. Ich habe eine Perl-Bibliothek für die meisten Vektorberechnungen der Verwaltung, das sehr nützlich Point-of-Referenz ist die Berechnung wie AI und andere Suchbäume.

http://en.wikipedia.org/wiki/Polar_coordinate_system

Für die günstigen Plätze, Polarkoordinaten Plots ein Punkt als Ursprung (wie die Standard-xy kartesische Graphen), wählt einen Vektor als Basislinie (wie die Cartesian) und dann bezeichnet Punkte (Magnitude, Grad).

Wenn dies wirklich ein Home Run mit hex trifft Karten ist, dass jeder reine Winkel ein Vielfaches von 60 Grad. Wenn Sie jede hex Seite ein Blick auf ((a, b, d, e, f, g) zuweisen und einen Vektor als Größenordnung gelten und mit Blick auf mehr nützlichen Eigenschaften entstehen.

1) Jeder hex kann als Summe von zwei benachbarten Vektoren (oder einem einzelnen Vektor dargestellt werden, wobei der zweite Vektor eine Größe 0 oder Identitätselement ist). z.B. 1a + 1b = 1A1B oder 1b1a. So oder so ist es ein Traversal von 2 Hexfelder, eine Größenordnung von 2, und bezeichnet eine eindeutige Hex vom Ursprung (0,0). 2) Nicht-benachbarte Vektoren können immer zwei der Anwendung dieser Regeln benachbarten Vektoren vereinfacht werden: 2) Negation: 1A + 1D = 0, 1 B + 1E = 0, 1C + 1F = 0, z.B. 3) Kombination: 1A + 1C = 1B, 1B + 1C 1D =, 1C + 1E = 1D, 1D + 1F = 1E, 1A 1E + = 1F

Wenn man sich diese Grundsätze im Auge, eine Rakete, die den tatsächlichen Raum durchqueren müssen, braucht die Vektoren als eine Verkettung oder die Reihenfolge der kleineren Querungen zu bewahren. 1A + 1A + 1C + 1C stellt eine Rakete, die aus zwei Flüche reist und dann Banken scharf (120 Grad) und bewegt sich zwei Felder, seine Traversal endet nur 2 Felder entfernt, aber 60 Grad vom Kurs ab, es ist Anfangsrichtung.

Der Targeting-Computer oder Explosion kann jedoch nur kümmern sich um den Bereich zu vereinfachen, so dass diese Vektoren dieser Regeln unter Verwendung von Bedeutung sein können. Um herauszufinden, die kürzeste Entfernung zwischen zwei beliebigen Punkten, einfach die Vektoren verketten und sie vereinfachen.

Es ist auch recht einfach, eine Hex-Karte zu erstellen und sie machen Erstellen Sie ein Hex-Objekt als Ursprung mit Eigenschaften, Magnitude = 0, Vektor = NULL, Etikett (optional) = some string (Ich mag diese der für Menschen lesbare Wert machen), Name = 0 (Verkettung der Magnitude und Vector), und Exits = Array (Sie werden 6 Knoten bevölkern, abgesehen von Wurmlöcher oder andere). Plot der Ursprung auf dem Pixel zentriert Sie wählen, um die Mitte der Karte zu machen. Rendern Sie die hex. Wählen Sie einen Radius für die Karte

Foreach Magnitude, --- bevöl den Ring mit jeder Kombination von benachbarten Vektoren. Es gibt eine Reihe von Möglichkeiten, dies zu tun, aber die einfachste ist es, einen einzigen Vektor als Basis wählt und dann Traverse Magnitude Flüche in einer geeigneten Richtung und Umlaufbahn mit einer 60-Grad-Drehung. z.B. Für Magnitude 3, geht Start bei 3E, dann 3A, 3B, 3C, 3D, 3E, 3F jeweils hex als Summen der letzten hex Berechnung durchlaufen und die neuen Single hex Vektor. --- In jedem dieser Flüche, einige trig gelten das mittlere Pixel zu berechnen, wo zu Ihrem Ursprungspixel relativ sein sollte und die Hex

render

Hoffnung, dass jemand hilft. Hex Karten Felsen. Rendering sie saugt ein bisschen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top