Czy istnieje trójwymiarowy odpowiednik map kafelków heksadecymalnych?

26

Prawdopodobnie największą zaletą kafelkowania mapy opartej na heksie w porównaniu z kwadratem jest to, że środek każdego heksa ma taką samą odległość do wszystkich sąsiednich heksów. Czy istnieje podobny kształt, który układa płytki w ten sposób w 3D, oraz silnik obsługujący taki model?

Hackworth
źródło
Zadajesz dwa pytania (niezalecane). Pierwsze pytanie o kształty 3D (inne niż kostki, jak przypuszczam), naprawdę należy do math.stackexchange.com . Drugi jest bardziej związany z grą, choć podejrzewam, że odpowiedź brzmi „nie”. :)
Cyclops,
1
Kwadraty mają również taką samą odległość do wszystkich sąsiednich kwadratów (zakładając, że sąsiad jest kwadratem, który dzieli krawędź)
burzliwy
2
Zastanawiałem się nad wprowadzeniem go do matematyki, ale doszedłem do wniosku, że temat może być zbyt bliski zastosowaniu w prawdziwym świecie;) Ale spróbuję.
Hackworth
@bummzack Jeśli nie było to oczywiste z pytania, oczywiście odniosłem się do przypadku, w którym liczysz wszystkie 8 kwadratów jako sąsiadujące lub 26 kostek w 3D.
Hackworth
Zredagowałem trochę twoje pytanie, aby zlekceważyć „matematykę” pierwszego fragmentu i położyć większy nacisk na aspekt silnika.
Josh

Odpowiedzi:

19

Zespół tagów Google i Wikipedia na ratunek:

Tesselacja, a bardziej konkretnie w 3D, Honeycomb to termin, którego należy szukać. Kostki są rzeczywiście jedynymi regularnymi (wszystkie twarze są przystające) ORAZ wypełniającymi przestrzeń (bez pozostawiania przerw jak przy pakowaniu kul) wielościany w przestrzeni 3D. Ale mają ten sam problem co kwadraty 2D - bardzo różne odległości do swoich sąsiadów.

Bitruncated sześcienny plastra miodu wykonana z ośmiościan ścięty (dość łyk) jest bardzo zbliżona do tego, co zostało z prośbą o. Minusem jest to, że ścięty ośmiościan nie jest regularny (kwadraty i heksy jako twarze) i ma mniej sąsiadów niż sześcian (14 vs 26), ale wypełnia przestrzeń pojedynczą, powtarzaną bryłą i ma (z grubsza) równą odległość do wszystkich swoich sąsiedzi

Hackworth
źródło
+1 ciekawe. Wygląda na to, że liczba sąsiadów w kostce jest wyłączona (powinno być 26 zamiast 28?).
bummzack 17.10.11
+1 plaster miodu, fajnie. Znałem strukturę, zapomniałem nazwy.
Inżynier
9

Sześciokątne mapy 2D przedstawiają kulki upakowane w płaskiej tacy (2D), przy czym każdy hex jest wyśrodkowany na równoważnej kuli, i umożliwiają określenie odległości między komórkami do realnej (w każdym razie do celów gry) dokładności, po prostu poprzez zliczenie liczby komórki szesnastkowe, przez które przechodzisz.

Równoważnym odwzorowaniem 3D jest wspomniana powyżej tessalacja kubiczna (FCC) / sześcienne ścisłe upakowanie (CCP) przy użyciu rombowej dwunastościanu.

Teselacja sześcienna ześrodkowana na powierzchni w trzech wymiarach

Ten artykuł w Wikipedii odnosi się w szczególności do FCC / CCP, a ten drugi porównuje go do heksagonalnego ścisłego upakowania (HCP), ale drugi artykuł jest zwykle bardziej matematyczny.

Badałem ich użycie w mapowaniu RPG, ale chociaż jest w nich atrakcyjna „poprawność” (podstawa matematyczna, zdolność do pakowania przestrzeni bez przerw, symetria, gdy plastry są przenoszone przez sieć itp.), Prawdziwa problemami związanymi z grami wydaje się być trudność, z jaką gracze / GM mieliby do czynienia w ich wizualizacji, oraz brak oczywistego układu współrzędnych do ich odniesienia.

Chociaż mnie to boli, proste kostki o współrzędnych {x, y, z} wyglądają jak znacznie prostsze rozwiązanie, pozwalające wszystkim skupić się na rozgrywce, a nie na ciągłym zdumieniu przez nietrywialny wybór standardu mapowania.

Tylko moje 2 centy, choć bardzo późny dodatek do tego wątku.

Och, poza ustawieniami związanymi z przestrzenią kosmiczną, każda komórka ma dwanaście sąsiadujących komórek (trzy powyżej, trzy poniżej i sześć wokół płaszczyzny), a to pozwala na czyste połączenie konstelacji / astrologii. Wyobraź sobie sektor macierzysty w początkowej komórce, a następnie nazwij każdy sąsiedni sektor na podstawie jednej z konstelacji astrologicznych. Tak jak mapy heksadecymalne można rozkładać na mniejsze heksy, komórki FCC można również rozkładać na mniejsze komórki, umożliwiając rozkład każdego sektora nazwanego na podstawie konstelacji na podsektory. „Ustawmy kurs dla podsektora 031 sektora Gemini” ...

Stuart

StuartW
źródło
Byłbym zainteresowany omówieniem z tobą problemu współrzędnych sześciokątnych 3D dla gier RPG.
Kyle Strand
6

Istnieją dwa proste trójwymiarowe analogi siatki heksagonalnej: Heksagonalne uszczelnienie zamknięte (HCP) i Cubic Close Packing , znane również jako Cubic-Centered Cubic (CCP / FCC).

Obie te sieci są dość podobne: mają taką samą liczbę najbliższych sąsiadów na stanowisko (12) i tę samą gęstość upakowania kuli (~ 74%), i obie mogą być rozkładane na ułożone w stos sieci 2D hex.

Z tych dwóch uważam sieć CCP za nieco „ładniejszą”: jest bardziej symetryczna, nie mając preferowanej osi jak sieć HCP. W szczególności, jeśli usiądziesz w jednej z komórek sieci CCP i spojrzysz na jedną z najbliższych sąsiednich komórek, sieć będzie wyglądać tak samo bez względu na to, z której z sąsiednich komórek patrzysz. Nie dotyczy to sieci HCP.

Komórki płytek CCP są ładnymi i symetrycznymi rombowymi dodekaedrami , podczas gdy komórki HPC są skręcone w trapezo-rombowe dodekaedry . Oto zdjęcie niektórych rombowych dwunastościanów ułożonych kafelkami w celu utworzenia siatki KPCh z Wikipedii:

Rombowe dwunastościenne kafelki

(Zdjęcie autorstwa użytkownika Wikipedii AndrewKepert, na licencji GFDL 1.2+ / CC-By-SA 3.0.)

Zauważ również, że jak sugeruje alternatywna nazwa „sieć sześcienna zorientowana na twarz”, istnieje bardzo prosta formuła znajdowania środków komórek w sieci CCP: zacznij od prostej sieci sześciennej, z punktami w rogach kostek, i dodaj nowe punkty w środkowej części powierzchni kostek. Najbliższymi sąsiadami punktów na rogach są ci na 12 sąsiadujących ścianach, podczas gdy najbliżsi sąsiedzi punktów na twarzach to 4 na sąsiednich rogach plus 8 na sąsiadujących ścianach dwóch sześcianów dzielących twarz, na której punkt centralny leży. (Z pewną geometrią możesz pokazać, że sąsiedztwo wszystkich punktów w rzeczywistości wygląda tak samo, mimo że ta konstrukcja sprawia, że ​​„punkty czołowe” różnią się od „punktów narożnych”).

(Uwaga: strona MathWorld, do której odsyłam, wydaje się zawierać błąd, co daje gęstość pokrewnej, niezbyt upakowanej sieci „Cubic-Centered”, również 74% - w rzeczywistości około 68%.)

Ilmari Karonen
źródło
5

Zgadzam się z @Cyclops, że prawdopodobnie lepiej jest o to zapytać przy wymianie stosu matematycznego, ale w międzyczasie możesz zajrzeć do heksagonalnej struktury zamkniętego pakowania . Jest to najgęstszy możliwy układ sfer w 3D i chociaż odległość do wszystkich sąsiadów nie jest jednolita, może być najlepsza, jaką możesz uzyskać. Diament sko kratownica ma równy dystans do bezpośrednich sąsiadów, ale to dość luźno zapakowany, a każdy punkt ma tylko cztery sąsiadujące punkty.

SimonW
źródło
HCP rzeczywiście działa dobrze; po prostu trzeba trochę „zgnieść” warstwy, aby odległość między środkami komórek była taka sama we wszystkich kierunkach. Komórka ma zatem dwunastu sąsiadów - trzech w górę, trzech w dół i sześciu w tej samej płaszczyźnie.
Martin Sojka