Sterowanie w 4D

0

Robię prostą grę, w której poruszamy się w virtualnej rzeczywistości 4D :]

No i trzebaby jakoś umożliwyć graczowi sterowanie obrotami kamery wokół wszystkich 12 płąszczyzn obrotu :/ tymczasem jedną myszką da się sterować zaledwie w 2 kierunkach (poziomym i pionowym).
... od biedy zawsze można pozostałe 10 płaszczyzn podłączyć do par klawiszy (zajełoby to prawie pół klawiatury :] ), ale ja myślałem o bardziej nietypowym rozwiązaniu np podłączenie 2 myszek i niezależnie sterowanie każdą znich, tyle że nie wiem jak wtedy rozposnać czy to ruch 1szej czy 2giej myszki [sciana]

Gdybym użył myszki ze scrollem to dałoby się wykorzystać także kółka do sterowania.
Czyli np 2 myszki z 2 skrolami każda to w sumie 8płaszczyzn obrotu :]

Jeśli macie inne zwariowane pomysły to chętnie poczytam :)

Dodam jeszcze, że 'gra' ma być wykorzystana w celu pokazowym więc nie muszę się przejmować tym, że małokto ma podpięte jednocześnie 2 myszki do kompa - wystarczy, że ja na ten pokaz będę mógł podpiąć ;P

0

Ciekawość mnie zżera... jak na płaszczyźnie 2D (ekran monitora) odzwierciedlasz przestrzeń 4D? 8-|

Dopiero w 3D można teoretycznie pokazać rzut przestrzeni 4D - tak samo jak w 2D w danym momencie można ukazać jedynie rzut przestrzeni 3D.

Pomijam fakt, że człowiek nie jest w stanie sobie wyobrazić cztero-wymiarowej przestrzeni...

Chyba, że przyjąć czas jako czwarty wymiar - ale to na pewno nie o to Ci chodzi..

0
Marooned napisał(a)

Ciekawość mnie zżera... jak na płaszczyźnie 2D (ekran monitora) odzwierciedlasz przestrzeń 4D? 8-|
Dopiero w 3D można teoretycznie pokazać rzut przestrzeni 4D - tak samo jak w 2D w danym momencie można ukazać jedynie rzut przestrzeni 3D.

Wybacz, ale to kompletna bzdura.
1)Nawet na tym forum są wzory na rzutowanie z nD w kD dla n>k>2 :]
2) user image

Marooned napisał(a)

Pomijam fakt, że człowiek nie jest w stanie sobie wyobrazić cztero-wymiarowej przestrzeni...
Chyba, że przyjąć czas jako czwarty wymiar - ale to na pewno nie o to Ci chodzi..

...i właśnie dlatego to jest takie ciekawe :)

0

Bzdura? :|
O ile mnie pamięć nie myli, to wiadomości pochodzą z wykładu matematyki na politechnice.

To co przedstawiłeś, hipersześcian... to jakby nie patrzeć - jest to bryła 3D :)
Jestem w stanie go zbudować więc na pewno nie jest cztero-wymiarowy...

0

To nie hipersześcian - to animacja hipersześcianu - w pewnym sensie 4D

Co do sterowania, polecałbym inną metodę, bo mało kto ma 2 myszy wpięte. Weź pod uwagę, że do poruszania się w przestrzeniu gier 3D wystarczy mysz i pojedyncze klawisze. Może do 4D wystarczą 2 klawisze więcej, by przesuwać się w osi tegoż wymiaru.

0
Marooned napisał(a)

O ile mnie pamięć nie myli, to wiadomości pochodzą z wykładu matematyki na politechnice.

Ten obrazek który przedstawiłem pochodzi ze strony mojej doktorki od Algebry z www.im.pwr.wroc.pl :]
A tą grę piszę na wykład o przestrzeni 4D, który Ona (z moją pomocą :) ) ma prowadzić na DFN.

To czy do kompa będzie trzeba podłączyć 2 myszki to naprawdę nie ma większego znaczenia. Ważne jest, by to działało i by się w miarę intuicyjnie obsługiwało ;)

W grach 3D masz 3 osie obrotu i sterowanie szybkością przemieszczania (szybciej/wolniej). Zazwyczaj wygląda to tak, że na myszce masz obroty w prawo/lewo i góra/dół a obroty wokoł własnej osi, oraz sterowanie szybkością są podpięte pod klawisze na klawiaturze.
Czyli myszka+4klawisze.

W 4D mamy 12 płaszczyzn, wokół których można się obracać no i także sterowanie szybkością :]
czyli trzeba by <ort>uŻyć </ort>26 klawiszy...
Chyba, że ktoś ma lepszy pomysł :D
Ten pomysł z dwoma myszkami jest w ogóle wykonalny - da sie po podłączeniu dwóch myszek jakoś ort!, która została poruszona :>

ps: Czemu zacnacza w ogóle jako ort! - przecież gogle pokazuje, że to poprawne słowo :>

//google to nie słownik ortograficzny - i popraw te okropne błędy - M

0

Nie wiem jak Ty to policzyłeś, ale to poruszania w 3D wystarczy mysz (2D) i dwa klawisze (przód, tył), a każdy kolejny wymiar wymaga dwóch dodatkowych klawiszy do poruszania się wzdłuż jego osi.

Wszystkie pozostałe klawisze sa nadmiarowe i nie konieczne, choć mogą ułatwić życie.

0
Szczawik napisał(a)

Nie wiem jak Ty to policzyłeś, ale to poruszania w 3D wystarczy mysz (2D) i dwa klawisze (przód, tył), a każdy kolejny wymiar wymaga dwóch dodatkowych klawiszy do poruszania się wzdłuż jego osi.

Wszystkie pozostałe klawisze sa nadmiarowe i nie konieczne, choć mogą ułatwić życie.

Ta :]
Tylko, że ja chcĘ się obracać a nie poruszać w przód/tył wzdłuż dowolnej osi :P

chcĘ mieć możliwość sterowania wszystkimi obrotami a poruszać się jedynie w przud/tył (wzdłuż właśnej osi)

Przypominałoby to sterowanie rakietką, samolotem etc

0

2 rzeczy:
Wez sobie do serca ten adres http://sjp.pwn.pl/

Drugie: Widzialem wyklad fizyka ktory zajmuje sie badaniem i obliczeniami wszechswiata jako 12 wymiarowej przestrzeni, zapytany o to, jak sobie taka przestrzen wyobraza, stwierdzil, ze nie ma nawet najmniejszego pojecia jak wyglada 4 wymiarowa, nie mowiac juz o wiekszej ilosci :)
Takze sadze, ze jakos raczej ci sie nie uda tego przedstawic inaczej niz wzorami :)

0

Czy ktoś mógłby mi powiedzieć co ta animacja przedstawiająca 8 obracających się w 3D kuleczek ma wspólnego z czterowymiarową przestrzenią ? Bo czwartego wymiaru nie mogę się dopatrzeć nawet gdy moja koncentracja osiąga stężenie zaginające stalowe łyżki ...

pomocy !

//taa, a jak napisałem, że to bryła 3D to mnie zjechali... n/c - M

0

Wydaje mi sie przestrzeń n>3 wymiarowa z matematycznego punktu widzenia nie jest pojęciem geometycznym.

0

Nevar: dlaczego niby nie jest pojęciem geomtetrycznym? Jeśli Ci się wydaje to poszukaj kim był Karol Borsuk.

Co do pomysłu rzutowania 4D->2D, to proponuję zastanowić się co się stanie przy rzutowaniu np. kuli na przestrzeń 1-wymiarową, czyli prostą. Co z odcinka można o naturze kuli wywnioskować ;P

pzdr,
y.

0

Nie wiem czy nie czaicie czy co, ale ja nie pytam jak rzutować z 4D na 2D - to ort! mi ort! nieźle wychodzi :]
Są do tego odpowiednie wzorki :) tzn położenie na płaszczyźnie 2D punktu (x,y,z,t) z przestrzeni 4D wyraża się wrorem:
(x2,y2)=(x,y)/((z^2+t^2)^(1/2);
...I to w zupełności wystarczy kompowi do zamodelowania takiej przestrzeni :]

Tylko nie wiem jak ustawić kontrolę nad obrotami wokół poszczególnych płaszczyzn :/ :
xOy, xOz, xOt, yOz, yOt, zOt no i jeszcze ruch w <ort>przud </ort>i tył :]

A animacja przedstawia HyperCUBE obracający się wokół płaszczyzny xOy :P

0

Tu są ciekawe dywagacje na temat 4D: http://www.forum.gildia.pl/viewtopic.php?t=10933&postdays=0&postorder=asc&start=0

w sumie na wiki jest rzut 4D na 3D i na 2D
http://pl.wikipedia.org/wiki/Tesserakt
jednak jest on dla człowieka piekielnie mało czytelny - już bardziej zrozumiała jest siatka obiektu 4D w przestrzeni 3D.

Hipertesserakt też niezły - 5D

jednak zacytuję wiki aby potwierdzić moje wcześniejsze słowa: "dodatkowe wymiary przestrzenne wykraczają poza ludzkie wyobrażenie"

0

Widzisz, to co sprawia że na tej animacji jest bryła w 4D rzutowana na dwu wymiarowy monitor a nie bryła w 3D jest to, że w 3D bryła taka musiała by być zbudowana z jakiegoś rozciągliwego, gumiastego materiału natomiast jeżeli przyjąć że istnieje ona w 4D - jest wtedy bryłą sztywną. No i opisać obrót wokół 2 płaszczyzn bryły sztywnej w 4D jest łatwiej niż taki dość skomplikowany ruch/przeobrażenie dwóch połączonych sześcianów w 3D :]

0

Panowie!
Pytanie było o sterowanie, a nie o rzutowanie, czy wyobrażanie sobie. To nie jest nasz problem. Szukajcie pomysłu jak sterować.

Teraz tylko ile jest tych możliwych płaszczyzn obrotu? 12?
Przy 3D mamy 3 płaszczyzny. Aby ustawić się w dowolnym kierunku potrzeba nam jedynie obrotół w 2 płaszczyznach. 3 możemy uzyskać składając ruch z pozostałych 2.

Ile więc potrzeba nam, w 4D, aby tak samo można było ustawić się w dowolnym kierunku? Może wtedy łatwiej będzie wymyśleć jakieś sterowanie?

0

Może jakiś licznik binarny sobie zasymuluj, np. 16 stanów, to powinno wystarczyć na te wszystkie płaszczyzny. Stan licznika można uzstalać za pomocą 4 wybranych klawiszy, np. F1,..F4, które będą służyły do gaszenia i zapalania odpowiednich bitów licznika.

pzdr,
y.

0
Dryobates napisał(a)

Panowie!
Pytanie było o sterowanie, a nie o rzutowanie, czy wyobrażanie sobie. To nie jest nasz problem. Szukajcie pomysłu jak sterować.

Dzięki :) Ja też cały czas ort! to przypomnieć :]

Dryobates napisał(a)

Przy 3D mamy 3 płaszczyzny.

Przy 3D obracamy się wokół osi a nie wokół płaszczyzn :] - Zawsze można obracać się conajwyżej wokół podprzestrzeni o 2 wymiary mniejszej niż ta w której się znajdujemy :P

3D -2 = 1D; // czyli oś obrotu i jak słusznie zauważyłes w 3D jest ich 3.
4D -2 = 2D; // czyli płaszczyzna.
Dryobates napisał(a)

Teraz tylko ile jest tych możliwych płaszczyzn obrotu? 12?

W 4D mamy 4 osie więc wszystkich plaszczyzn jest tyle na ile sposobów da się wybrać 2 elementy ze zbioru 4 elementowego... czyli 4*3/2 = 6 (to 12 to była po prostu pomyłka - nie zauważyłem, że xOy i yOx to ta sama plaszczyzna ;) ).

Dryobates napisał(a)

Aby ustawić się w dowolnym kierunku potrzeba nam jedynie obrotół w 2 płaszczyznach. 3 możemy uzyskać składając ruch z pozostałych 2.

Takie rozwiązania stosuje się w grach gdzie obrót wokół własnej osi byłby niezbyt naturalny :P ...ale ja chciałbym pokazać pełne wrażenie przestrzeni 4D i dlatego nie obcinałbym tej możliwości - dlatego system sterowania bardziej porównuje z symulatorami lotu niż z strzelankami (jak np UT) :P

0

To skoro tak się sprawa przedstawia, to pomysł z przełączanymi stanami wydaje się najlepszy.

0

ruch myszki w osi x - 1
ruch myszki w osi y - 2
lewy, prawy przycisk myszki - 3
rolka myszki - 4

Zostają tylko 4 klawisze na klawiaturze - na przykład strzałki - co nie będzie aż tak uciążliwe jak 24...

EDIT: To "z symulatorami lotu" mnie zainteresowało... może podłącz jakiś Joistick, na tych nowszych jest tyle wszelkiego rodzaju osi obrotu, przpustnic itp że powinno wystarczyć :)

0

Z joyem to dobry pomysł. Na przykład taki - w pewnym sensie standard: 4 osie (przód-tył, lewo-prawo, lewoskręt-prawoskręt [orczyk], przepustnica), POV (skokowy, ale za obrót może robić - 2 osie), no i przyciski.

A jak nie masz tak rozbudowanego joy'a to może prosty joy+mysz?

0

Mam nadzieję, że będziesz mógł udostęnić ten program abyśmy zobaczyli efekty :)

0

rowniez z checia bym taka gre zobaczy nawet jesli mialbym podlaczyc stara myszke do kompa ;)
jakos nigdy nie moglem sobie wyobrazic przestrzeni 4D

sorry za brak polskich znakow, ale siedze na uczelni na jakichs przestarzalych kompach (Solaris z jakims beznadziejnym X-Window, czy co to tam jest :P )

0

Cześć. Ja również chciałbym zobaczyć jak taka gierka ma wyglądać. 5 lat spędziłem studiują matematykę ale najlepszy sposób na jaki wpadli profesorowie to po prostu rysowanie rzutów. Zakładam że mamy 4 osie, OX,OY (przyjmijmy płaszczyznę ekranu),OZ (od do ekranu) i powiedzmy OR (dodatkowy wymiar). Jeśli zaczniesz rzutować na płaski ekran powiedzmy sześcian w 3d to pozbywając się wymiaru OZ uzyskasz płaski obiekt w OX,OY. I jest ok. Nasza wyobraźnia jest w stanie rozpoznać że chodzi tu o obiekt z 3d. Choć jeśli nie jest cieniowany to już nie jest to takie wyraźne. Jeśli zaczniemy rzutować (jest to chyba nieuniknione) hipersześcian w 4d to możemy to zrobić w 2 krokach, tzn zrzutować 4d na 3d (analogia sześcianu na kwadrat) a następnie tak powstały sześcian zrzutować na kwadrat na ekranie. Jeśli nie będziesz przesuwał niczego w wymiarze OR to będzie to wyglądało po prostu jak przestrzeń 3d. Bez najmniejszej różnicy, i tak będzie odbierane przez oczy. Jeśli teraz zaczniesz przesuwać coś w wymiarze OR ale OZ będzie stałe to efekt będzie identyczny. Jeśli natomiast zaczniesz przesuwać coś wzdłuż obu osi jednocześnie to obraz będzie po prostu nieczytelny. Na przykładzie sześcianu jakby go obracać wzdłóż OZ i jednocześnie wzdłóż OR to będzie to skalowany obracany kwadrat na ekranie. Ale nie mam pojęcia jak chcesz zrobić żeby to cokolwiek komukolwiek mówiło. Jestem w stanie zrozumiec jak działa przestrzeń 4d, jestem w stanie przeliczyć większość rzeczy w 4d ale jakbym zobaczył bryłe 4d to zobaczyłbym tylko i wyłącznie jej przekrój który jest bryłą 3d. Problem nie polega na tym że bryły 4d nie da się przedstawić, problem jest tej natury że taki obiekt będzie po prostu animowaną bryłą 3d i przypuszczam że niewiele osób by się zorientowało w czym rzecz... Tak czy inaczej BARDZO chciałbym zobaczyć taką gierkę. Jedyne co mi przychodzi do głowy to może to żeby pokazywać taki obiekt animowany jednocześnie tylko wzdłóż jednego wymiaru i informowanie widzów że zmieniasz wymiar przekształceń. Inaczej sam bym pewnie nic na tym nie zobaczył:( Pozdrawiam i naprawdę mam nadzieję że Ci sie uda bo bardzo chciałbym coś takiego zobaczyć.

Pozdrawiam. :)

To znowu ja;) Taksię waśnie zastanawiam nad tą animacją którą przedstawiłeś. Wydaje mi się że jest delikatnie przekłamana. Uwzględniając perspektywę w takiej przestrzeni rzeczywiście obrót taki wyglądałby podobnie tylko że przednie poziome krawędzie takiego hipersześcianu przy takiej animacji nie zachodziłyby jenda za drugą tylko przez siebie w pewnym momęcie przenikały;) Dlatego wydaje mi się że jedyne co będzimy widzieć to animowaną bryłę 3d. Jak ktoś podkreślił czasoprzestrzeń jest 4 wymiarowa, można więc przedstawić hipersześcian jako zwykły animowany właśnie w czasie sześcian. Choć przyznaje Ci rację że gdybyś zrobił taki algorytm wyświetlający coś takiego można by uzyskać ciekwe efekty animacyjne (w przypadku bardziej skomplikowanych brył) stosunkowo małym kosztem. Jeszcze raz powodzenia i wrzuć na forum jakieś fotki/animacje jak ci się uda.

0

Według mnie najtrudniej jest pradzić sobie z porblemen dwóch myszek - ma ktoś może jakieś pomysły?

0
kazet napisał(a)

Według mnie najtrudniej jest pradzić sobie z porblemen dwóch myszek

Ja właśnie najbardziej liczyłem na jakąś podpowiedź odnośnie tego :-/

0

chyba w windowsie sie nieda...

0
adrianek napisał(a)

chyba w windowsie sie nieda...

  1. Kto powiedział, że ograniczamy się do m$ Windy :>
  2. Nie możliwe, że się nie da - przecież mógłbym mieć jedną mysz normalnie do ps2 a drugą do portu szeregowego (no może nie zawsze się da - w moim kompie nie mam portów szeregowych :P ) podpiętą i tą z szeregowego obsługiwać programowo (czytając co tam wysyła na tego COM'a) a nie przez API :] ...tylko jak to zrobić :O
0
Sebo napisał(a)
adrianek napisał(a)

chyba w windowsie sie nieda...

  1. Kto powiedział, że ograniczamy się do m$ Windy :>
  2. Nie możliwe, że się nie da - przecież mógłbym mieć jedną mysz normalnie do ps2 a drugą do portu szeregowego (no może nie zawsze się da - w moim kompie nie mam portów szeregowych :P ) podpiętą i tą z szeregowego obsługiwać programowo (czytając co tam wysyła na tego COM'a) a nie przez API :] ...tylko jak to zrobić :O

To jak się do windowsa nie ograniczamy, to sprawa jest wzgłednie prosta.

Bierzesz 2 myszki na usb. Podłączasz do komputera z odpowiednią liczbą portów usb. Bierzesz open-sourcowy system operacyjny. Przeglądasz kod jego sterowników do myszy usb. Jeżeli trzeba (bo może być już obsługa wielu urządzeń) to rozszerzasz sterownik o obsługę wielu urządzeń. Odczytujesz położenia myszy za pomocą ioctl, lub jeszcze lepiej zczytujesz z urzadzenia myszy jak ze zwykłego pliku.

W X-ach istnieje możliwość dodania wielu myszek, wystarczy ich urządzenia podać. Więc jeżeli API x-ów daje dostęp do kilku wskaźników, to już w ogóle masz spokój (odpuszczasz sobie całe ioctl czy czytanie z plików).

Jak skombinuję jakąś myszkę na usb to sprawdzę jak to działa.

0

Sorry za odgrzewanie starych wątków, ale czy ten projekt został ukończony i czy można go skąś pobrać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1