Labirynt 4D

[GitHub]

Zrzut ekranu z programu

Zrzut ekranu z programu. Kliknij tutaj aby obejrzeć filmik.

Labirynt 4D jest programem umożliwiającym poruszanie się po 4-wymiarowym labiryncie. Prawdopodobnie w tym miejscu już tracę część czytelników, więc może zacznę od wyjaśnienia co właściwie znaczy "4-wymiarowy" ;)

4 wymiary

Zacznijmy od tego, że w tym programie czwartym wymiarem nie jest czas. Rzeczywiście teoria względności opisuje świat jako 4-wymiarową czasoprzestrzeń, ale tu chodzi o 4-wymiarową przestrzeń (bez "czaso-").

Na czym zatem polega 4-wymiarowość przestrzeni? W dużym skrócie, na tym, że istnieją w niej 4 wzajemnie prostopadłe kierunki, a każdy punkt wymaga podania 4 liczb (współrzędnych), aby jednoznacznie określić jego położenie.

Żeby trochę lepiej zwizualizować sobie, na czym to polega, rozważmy punkt. Punkt jest obiektem 0-wymiarowym. Nie ma tu żadnych kierunków, a gdy stanowi on całą dostępną przestrzeń, nie trzeba też podawać żadnych liczb, by określić położenie (bo jest i tak tylko jedna możliwość).

Wyobraźmy sobie teraz, że rozciągamy ten punkt, otrzymując prostą. Tu mamy już 1 wymiar - jest jeden kierunek, a wszystkie punkty na prostej możemy ponumerować liczbami rzeczywistymi (jak oś liczbową) i wtedy podanie jednej liczby jednoznacznie określi, o który punkt nam chodzi.

Jedziemy dalej. Rozciągamy prostą w kierunku prostopadłym do niej, otrzymując płaszczyznę. Możemy sobie wyobrazić, że płaszczyzna składa się z nieskończenie wielu ponumerowanych prostych, z których każda ma ponumerowane punkty. Możemy więc określić położenie podając 2 liczby (numer prostej i numer punktu na niej), co oznacza, że płaszczyzna jest 2-wymiarowa.

Kolejne rozciągnięcie, kolejny wymiar. Z nieskończenie wielu ponumerowanych płaszczyzn możemy poskładać przestrzeń, w której określenie położenia będzie wymagało 3 liczb (numer płaszczyzny, numer prostej na płaszczyźnie, numer punktu na prostej). W takiej przestrzeni żyjemy i z nią jesteśmy najbardziej obeznani.

Kostki - od 0 do 5 wymiarów

Kostki - od 0 do 5 wymiarów

Ale kto każe nam się tu zatrzymać? Nie zatrzymujmy się więc i rozciągajmy dalej. Weźmy nieskończenie wiele 3-wymiarowych przestrzeni i poskładajmy z nich... coś. Tu już wyobraźnia niestety zawodzi, nasze mózgi nie są przystosowane do radzenia sobie z takimi rzeczami. Matematyka jednak nie ma z tym problemu - nic nie stoi na przeszkodzie, by dopisać czwartą liczbę i traktować ją jako numer 3-wymiarowej przestrzeni (bardziej fachowo: hiperpłaszczyzny) w tym "czymś".

Na obrazku po prawej stronie przestawione jest takie rozciąganie w kolejnych kierunkach, z tym że skończone - tzn. nie mamy prostej, tylko odcinek, kwadrat zamiast płaszczyzny itp. 4-wymiarowy odpowiednik sześcianu nazywany jest hipersześcianem albo tesseraktem. Obrazek sięga nawet dalej i przedstawia również rezultat rozciągnięcia tesseraktu w piątym kierunku. Oczywiście obrazek sam w sobie jest płaski, więc wyobrażenie nie jest idealne - w rzeczywistości wszystkie krawędzie spotykające się w jednym wierzchołku powinny być do siebie prostopadłe.

Program

Nie da się ukryć faktu, że ekran komputera jest tylko 2-wymiarowy. Jak zatem przedstawić na nim 4-wymiarowe obiekty? Istnieją dwa główne sposoby "zmniejszania wymiarowości" obiektów.

Pierwszy to rzutowanie. Rzutować można na wiele sposobów, ale najczęściej wykorzystywane są dwa - rzutowanie prostopadłe oraz rzutowanie perspektywiczne. Oba są przedstawione na obrazku poniżej.

Przykłady rzutowania - po lewej prostopadłe, po prawej perspektywiczne

Przykłady rzutowania - po lewej prostopadłe, po prawej perspektywiczne

Tutaj mamy pokazane rzutowanie obiektów 3-wymiarowych, ale to samo można zrobić z 4-wymiarowymi. Jedyna modyfikacja jest taka, że trzeba wtedy rzutować dwa razy - pierwszy raz na 3-wymiarową przestrzeń, która następnie zostanie narysowana na ekranie dzięki drugiemu rzutowaniu.

Czerwone linie tworzą przykładowy, sześciokątny przekrój sześcianu

Czerwone linie tworzą przykładowy, sześciokątny przekrój sześcianu

Drugi sposób to rysowanie przekrojów (ilustracja po prawej). Każdy wielowymiarowy obiekt można "przeciąć" mniej wymiarową hiperpłaszczyzną i otrzymać w ten sposób figurę o niższym wymiarze. Tu poważną wadą jest to, że przekrój wprost pomija dużą część obiektu - nie wiemy absolutnie nic o tym, co dzieje się poza wybraną hiperpłaszczyzną. Tym niemniej, ten właśnie sposób jest zastosowany w Labiryncie 4D.

Gracz w każdym momencie widzi jedynie 3-wymiarowy przekrój całej przestrzeni, który następnie jest rzutowany perspektywicznie na ekran. Poruszanie się jest możliwe wyłącznie w tym przekroju, lecz sam przekrój może być obracany. Gdybyśmy zastosowali ten sposób do grafiki 3D, gracz mógłby np. w pewnym momencie widzieć jedynie przedstawiony wyżej sześciokąt. Poruszanie się pozwalałoby mu wyłącznie na zbliżanie się, oddalanie lub okrążanie sześciokąta. Możliwe jednak byłoby również obracanie płaszczyzny przekroju, które mogłoby sześciokąt zmienić w pięciokąt, prostokąt, kwadrat, trójkąt...

Skoro już to wyjaśniliśmy, przedstawmy sterowanie w programie:

  • W/S/A/D/Q/E - ruch w przód/tył/lewo/prawo/górę/dół
  • T/G - pochylanie widoku w przód/tył
  • F/H - przechylanie widoku lewo/prawo
  • R/Y - obracanie widoku lewo/prawo
  • U/J - obracanie hiperpłaszczyzny przekroju tak, że rzeczy z przodu i tyłu zamieniają się z niewidocznymi (przesuniętymi względem gracza w 4 wymiarze)
  • C/V - obracanie hiperpłaszczyzny zamieniające boki z niewidocznym
  • B/N - obracanie hiperpłaszczyzny zamieniające górę i dół z niewidocznym

Gracz reprezentowany jest przez żółty sześcian. Celem jest dotarcie do niebieskiego tesseraktu.

Aktualnie w programie dostępne są dwa poziomy. Pierwszy składa się z 4 tuneli, poprowadzonych wzdłuż 4 osi współrzędnych. To powoduje, że jeden z nich jest z początku niewidoczny i aby go przejść, potrzebny jest obrót hiperpłaszczyzny. Drugi poziom jest bardziej złożony ;)

Dotknięcie niebieskiego celu automatycznie przełącza poziom na następny lub kończy program.

Pobieranie

Pobierz “4D Labyrinth - Windows” 4d-labyrinth-win32.zip – Pobrano 2177 razy – 1,67 MB
Pobierz “4D Labyrinth - Linux” 4d-labyrinth-linux64.zip – Pobrano 1364 razy – 854,51 KB
Pobierz “4D Labyrinth - Mac OS” 4d-labyrinth-release-macos.zip – Pobrano 1223 razy – 619,69 KB