Procitao sam tvoju poruku u podforumu Fizika - i primetio bih jednu stvar: stvari koje pokusate da resite su prezvakane vec hiljadu puta, a kretati od nule je pomalo besmisleno (i nece vas nigde dovesti) - vise cete nauciti i mnogo brze napredovati ako makar pocnete od toga da gledate neku vec postojecu implementaciju.
ODE biblioteka je mozda najbolje mesto za pocetak - pravi izbor ako zelite da naucite i vidite kako sve to radi 'iznutra' (source je dostupan).
http://www.ode.org/
Ageia SDK je takodje potpuno besplatna za PC komercijalnu upotrebu, i mnogo mocnija (stabilnija, brza, funkcionalnija) od ODE-a - samo je zatvorena (mozda losiji izbor za vas zbog toga, jer ne mozete da tacno vidite kako sta i zbog cega se desava).
Ima i raznoraznih drugih biblioteka - manje kompletnih od ODE-a - ako vam se cini da je on previse komplikovan, mozda mozete naci nesto jos jednostavnije. Ja sam nekada davno koristio (takodje besplatnu) biblioteku koja ide uz FastCar fiziku za simulaciju vozila - 'Free multy-body package' - to je par klasa za CD/RigidBody. (
http://www.oxforddynamics.co.uk/download.htm)
Takodje, moj predlog na racun ovoga:
Citat:
Drolja: Kako najbolje resiti ovu situaciju. Telo je predstavljeno preko niza trouglova koji cine zatvoreni prostor. Imamo test koji pronalazi koji su se trouglovi presekli.
Moja zamisao je da nekako izracunamo dubinu prodora jednog tela u drugo i onda da pomerimo oba tela za tu duzinu i tako dobijemo situaciju u kojoj su ta dva tela u dodiru. Medjutim nemam ideju kako sracunati dubinu prodora, ni na koji nacin jedno telo utice na drugo prilikom sudara - tj. kako ih razdvojiti. Posto tela nisu pravilna geometrijska tela problem je jos slozeniji.
Za pocetak, ako boga znate, nemojte da koristite mesh-mesh collision detection. Uprostite vasa vozila sa par box-ova i sfera, to je sve sto vam treba. Mesh vam eventualno moze trebati za staticnu geometriju.
Ostatak prepustite ODE-u.
To (uprosceno) izgleda ovako: Postavis objekte u ODE scenu, namestis im parametre (pozicija/rotacija, masa, oblik, itd). Onda za svaki frame das ODE-u promenu vremena od prethonog frame-a, i onda on sam uradi sledece :
- izracuna novu brzinu/ugaonu brzinu svakog tela u zavisnosti od spoljnih uticaja i parametara (gravitacija, sile kojom utices, etc);
- pomeri/rotira tela u zavisnosti od njihovih brzina/ugaonih brzina
- proveri postojanje sudara i razresi sudare (ovo je i najkomplikovaniji deo, za koji ni nema potpuno savrsenih resenja).
Onda pokupis nove pozicije/rotacije i koristis ih za rendering!
Ako budes (budete) imao neka pitanja na tu temu, please pitaj ovde, posto je ipak vise GameDev-related :)