Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

Jó napot kívánok. Nemrég belefutottam egy problémát generáló hexagonális rács található. Vannak módszerek vonalai. Ezek alkalmasak, amit akarsz. És ez a módszer találtam. Talán rossz látszó, ki tudja. A fórum, én felajánlott három görbe megoldások:
1. Crutches (olyan opció, ami a legrosszabb).
2. Generation sor és öntsük a szükségtelen. Elvileg a helyes döntés, de sajnos, azt kell, hogy a központtól. Ezután kényelmesen hozzá a kívánt sejtek lesz.
3. A ferde koordinátákat. Ez egy komplex megazhest, amely képes megölni egy felhő idő. Azt még nem sikerült elsajátítani.
És most térjünk vissza a mi algoritmus.

A lényeg az ujjak


Meg kell, hogy a cellás szerkezet ala ezt.

Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

Az első lépés a generációs az első, a központi hatszög.

Ha a közönség egészen tisztánlátó, észrevette, hogy a szomszédos oldala a sejt képez a mátrix tengely.
Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

Az első sorban nincs gond, ha tudod, hogy a sugár és szög, akkor az összes hatszög alkotnak, ahogy kellene. Problémák jön a második sorban. Egyes sejtek nem hazudnak, ha ez szükséges. És az ok a következő. A mi szerkezete van időközönként. De ez nem kör alakú, és hatszög. Csak az első sorban közelítenek egymáshoz.
Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

Az ábra azt mutatja, hogy a központok a hatszög és feküdt a kör, és egy hatszög mátrixban. Azonban a második sorban a probléma jól látható.
Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

Úgy látszik, hogy csak a tengelyirányú hatszög (zöld) egy körön. A fennmaradó központok felé tolódott a központ és fekszenek a hatszög mátrixban. Ezért, a sugaras szimmetriája egy rács nincs beállítva.
Ez magában foglalja a következő határozatot.
Építs egy első tengelyirányú hatszög.
Ezután kiszámítjuk a vektorok. Az ábra azt mutatja, az irányt a vektorok. Meg lehet fordítani.
Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

De nem kell ezt vektor. Vagy inkább ő maga nem, de egy részét.
Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

Szükségünk van a kék vektor. Ez offset hozzá, hogy az axiális hatszög megszerzésének pontos koordinátákat. Sárga vektor osztva az alkatrészek száma egyenlő a számát hatszögek közötti axiális hatszögek + 1 (vagy a réteg szám).
Ezt követően, akkor létrehoz egy tetszőlegesen nagy tömb közepén.


És most a kód a felháborodást. Én programozott Xors3D, de azt hiszem, hogy bárki is, meg fogja érteni, hogy ez a dolog működik (annál is inkább, az egyszerű kódot, és okait lásd fentebb). Elég csak az egyik funkció - a funkció létrehozása egy cellába.
Itt a kód.

Vector kiszámítása
Ha megrendelése> 0 Then - kiszámítani a vektor, amikor egy szám nem nulla (ahol a központi hexa)
Vektor (i, 0) = ((CellRadius * sin (szög + 60) * rendelés-CellRadius * sin (Szög) * rendelés)) / (rendelés) - 0 = X, az első vektor koordináta
Vektor (i, 1) = ((CellRadius * Cos (szög + 60) * rendelés-CellRadius * Cos (Szög) * rendelés)) / (rendelés) - 1 = Z, a második koordináta vektor
End If
következő

Mi van a kimeneten:

Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

Frissítése 1.0 - forgás bármely szögben mátrix


Előfordulhatnak olyan helyzetek, amikor a hexagonális rács kell lennie valahol, hogy csatlakozzon derékszögben. Gondolkodtam rajta, és modernizálják a funkció - akkor most forgatni a teljes tömböt bármilyen szögben!
Tehát a kód:

Fontos különbség:
Funkció CreateCell (X #, Z #, rendelés%, AddAngle%) - van egy új érv, ez egy tetszőleges szöget - AddAngle.
Szög # = 360 / Limit * i + AddAngle - hozzáad egy ofszet kiszámításához a szögek és vektorok.
xRotateEntity Cell \ Sprite, 90, -AddAngle, 0 - Sprite forgása egy függőleges tengely körül az ellenkező irányba.

Mi van a kimeneten:
17 fok.

Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

30 fok.
Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben

10 fok.
Egyszerű generációs hexagonális (hatszögletű) mesh mátrix forgási középpontjához bármilyen szögben