Trochę fizyki matematyki w grach 3D


Warsztat - Programowanie gier komputerowych :: Trochę fizyki / matematyki w grach 3D







Strona główna Forum Szukaj Lista użytkowników
Grupy
Zarejestruj Zaloguj

Artykuły
Kliknij na kategorię żeby dodać artykuł Szukaj
Programowanie gier » Artykuły » Matematyka i Fizyka
[Wersja do drukowania]
Trochę fizyki / matematyki w grach 3D
Opis Wyobraźmy sobie, że piszemy grę 3D i poruszająca
się postać może strzelać, oczywiście lecą pociski a
trafione przez kulę jest to co znajdzie się w obrębie
kuli. Jak to zrealizować?
Autor Skalniak Data Nie 24 Paź, 2004 7:59 pm Typ **
Słowa klucze
Kategoria Matematyka i Fizyka
Odsłony 1149


Trochę fizyki / matematyki w grach 3D
Wyobraźmy sobie, że piszemy grę 3D i poruszająca się
postać może strzelać, oczywiście lecą pociski a trafione
przez kulę jest to co znajdzie się w obrębie kuli. Jak
to zrealizować?

Autor: Jacek Skalski (Skalniak)

Trochę fizyki w grach 3D

W artukule tym chciałbym skupic sie bardziej na idei niż
na funkcjach bibliotecznych którymi się owe zagadnienie
realizuje, także będzie to artykół dla tych którzy
używają DirectX jak i dla tych którzy korzystają z
OpenGL.

Żeby problem nie wydawał się oderwany od
rzeczywistości oraz od programowania gier przytoczę
konkretny przykład, który pomoże wyobrazić sobie
zagadnienie i ukaże potrzebę omawianego przeze mnia
modelu.

Wyobraźmy sobie, że piszemy grę 3D i poruszająca się
postać może strzelać, oczywiście lecą pociski a
„trafione” przez kulę jest to co znajdzie się w obrębie
kuli np. w takim sześcianie o środku w punkcie A=(x,y,z)
i krawędziach dx=dy=dz (można oczywiście użyć
prostopadłościanu ale w tym zagadnieniu wydaje się
niezbędna symetria). Jak to zrealizować?

W grze wszystkie przedmioty jak i postać, budynki,
wszelkie przedmioty oraz inne postaci są rysowane we
współrzędnych układu nieruchomego nazwę go K. Ale nasza
postać (kamera przykładowo) też się porusza i nawet
rotuje !! Mamy zatem drugi układ współrzędnych oznaczę
go K’ (są to stosowane zazwyczaj w fizyce oznaczenia).
Zatem kula będzie miała w układzie współrzędnych wektor
wodzący r’=(xk,yk,zk) (k oznacza kulę). Ale nie możemy
sprawdzać czy te współrzędne „dotkneły” przedmiotu, w
który celujemy ponieważ każdy przedmiot jest rysowany we
współrzędnych układu nieruchomego K. Musimy zatem
wyrazić współrzędne położenia naszej kuli w
współrzędnych układu K. Jak to zrobić ? Możemy
skorzystać z przekształcenia Galileusza. Bazuje ono na
zwykłym dodawaniu wektorów.

Oznaczmy:

O – wektor o początku w środku układu K a końcu w
począdku układu K’

r - wektor położenia kuli w współrzędnych ukłądu K

r’ - wektor położenia kuli w układzie K’



Rysunek obrazuje opisaną sytuacje (nie podpisałem
wektorów ale z opisu chyba każdy powinien sie domyśleć,
który „jak sie nazywa”)

Z dodawania wektorów (geometrycznego) mamy:

O+r’=r

lub

r=r’+v0*t

gdzie v0 jest wektorem prędkości (stałej) z jaką porusza
się układ K’

Problem wyrażenia współrzędnych kuli we współrzędnych
układu nieruchomego K mamy za sobą ale to jeszcze nie
koniec zagadnienia ponieważ przypadek, który rozważamy
jest bardziej skomplikowany – układ K może się obracać
wokół dowolnej osi ze stałą prędkością. Gdyby jednak sie
nie obracał powyższe wzory wystarczyły by do napisania
programu który sprawdza czy kula trafia w dowolny
przedmiot (wystrarczyło by sprawdzić czy nasz sześcian
nie zachacza o jakiś przedmiot).Aby zrealizować naszą
sytuację, którą sobie na początku stworzyliśmy na
potrzeby artykułu musimy wiedzić czego teraz szukamy.
Przydałoby się uzależnić położenie punktu materialnego
(nasza kula / pocisk) od kąta o który został obrucony
układ K’.

Poniższy rysunek poglądowy przedstawia przekrój,
zktórego można odczytać, że:


V_z=V*sin(alfa)

V_x=V*cos(alfa)



gdzie: alfa to kąt o który sie obrócił punkt, którego
wektorem wodzącym jest wektor V (alfa nie został
naniesiony na rysunek dla jego przejrzystości).

Powyższa wiedza wystarczy do zrealizowania postawionego
na początku zadania, wystarczy dodać do składowych
wektora r dodać składowe wektora V (czyli dodac wektory
r oraz V). Omówiony tutaj przypadek dotyczy sytuacji gdy
układ K’ obraca się tylko wokół osi OY. Sądze, że w
razie potrzeby każdy będzi mógł na podstawie tego
artykułu rozszerzyć sobie problem na rotacje wokół
wszystkich osi.

Uwaga: Warto pamiętać jak ustawiło się w grze układ
współrzędnych to bowiem może mieć wpływ na powyższe
wzory. Wtedy należy powtórzyć rozumowanie dla danego
układu współrzędnych.


Skocz do: Wybierz forumWarsztat - Programowanie
gier komputerowych|--Szkółka| |--Szkółka -
języki| |--Szkółka - grafika| |--Szkółka -
inne|--Programowanie gier| |--Ogólnie|
|--Dźwięk| |--Sztuczna Inteligencja|
|--Inne|--Programowanie grafiki|
|--Programowanie grafiki| |--OpenGL|
|--DirectX|--Produkcja| |--Pomysły|
|--Projektowanie| |--Projekty| |--Grafika|
|--Ogłoszenia|--O czym innym| |--Konferencje,
spotkania| |--Warsztat| |--Aktualności|
|--Artykuły| |--Wykłady| |--Compo|
|--Lepperlandia|--Śmietnik| |--Z odrzutu



Powered by Knowledge Base, wGEric (C) 2002 PHPBB.com MOD
This script (Knowledge Base - MX Addon v. 1.03e) is modified
by Haplo





W1.5b (C) 2004
[admin: ayufan, g[R]eK, Goliatus, mikael_, Regedit]
Wszystkie czasy w strefie CET (Europa)

Powered by phpBB2 Plus 1.52 based on phpBB 2.0.10 © 2001, 2002 phpBB
Group :: FI Theme :: Mody i Podziękowania












Wyszukiwarka

Podobne podstrony:
Detekcja kolizji w grach 3D
Row Fizyki Matematycznej 01 Prykarpatski p114
Row Fizyki Matematycznej Prykarpatski p32
Lenda A Wybrane Rozdziały Matematycznych Metod Fizyki Rozwiązane Problemy
Metody matematyczne fizyki
Matematyczne metody fizyki
Analiza Matematyczna 2 Zadania
Odpowiedzi do matury z fizyki maj 06?
Sprawdzian 5 kl 2 matematyka zadania

więcej podobnych podstron