6 Stimmen

Algorithmus zur Erzeugung von Zellen durch Spiralen auf dem hexagonalen Feld

Hilfe bei der Suche nach einem Algorithmus zur Erstellung von Zellen durch Spiralen auf dem sechseckigen Feld.

Sehen Sie sich das Bild an:

alt text

Stellen wir uns ein dimensionsloses 2d-Array vor. Die X-Achse ist die blaue Linie, Y ist horizontal, die Spirale ist rot.

Ich muss Zellen vom zentralen Punkt x0y0 zum Punkt N spiralförmig hinzufügen

Sagen Sie mir bitte, wie ich das Problem lösen kann. Ich danke Ihnen!

0voto

JayCrossler Punkte 1979

Ich mochte @shuras Herangehensweise an das Problem, konnte aber nicht genau diesen Algorithmus zum Laufen bringen. Außerdem verwende ich einen 2x1 Sechseckabstand (wobei x Zellen im Abstand von 2 angeordnet sind und jedes zweite x Element ausgeblendet ist).

Hier ist, was ich zum Laufen gebracht habe (allerdings in JavaScript):

    //Hexagon spiral algorithm, modified from 
    for(var n=1; n<=rings; ++n) {
        x+=2; add(x, y);
        for(var i=0; i<n-1; ++i) add(++x,++y); // move down right. Note N-1
        for(var i=0; i<n; ++i) add(--x,++y); // move down left
        for(var i=0; i<n; ++i) { x-=2; add(x, y); } // move left
        for(var i=0; i<n; ++i) add(--x,--y); // move up left
        for(var i=0; i<n; ++i) add(++x, --y); // move up right
        for(var i=0; i<n; ++i) { x+=2; add(x, y); }  // move right
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X