Autor Wątek: Silnik fizyczny  (Przeczytany 607 razy)

Offline IguanaBen

  • Użytkownik

# Maj 05, 2010, 21:41:48
Witam,
Próbuje napisać prosty silnik fizyczny.
Chciałbym, żeby obiekty były podzielone na kilka rodzajów(w praktyce klas), np. obiekty statyczne(np. ściany, podłoga) i dynamiczne(beczki, skrzynie, trupy).
Załóżmy, że mam algorytm wykrywania kolizji pomiędzy dwoma obiektami. Jak zrealizować sprawdzanie kolizji? Czy jedynym rozwiązaniem jest sprawdzanie każdego elementu z każdym?
Jak zrealizować taką funkcję? Za pomocą tablicy/listy obiektów?
np.:
obiekt tab[liczbaObiektow];
for(int a = 0 ; a< liczbaObiektow ; a++)
   {
    for(int b = 0 ; b< liczbaObiektow ; b++)
     {if(collide(tab[a],tab)
     {//operacje;}
     }
   }
Ale to działa tylko jeśli mam jeden typ obiektów. Jakimś rozwiązaniem byłoby stworzenie klasy głównej obiekt i podklas do niej, ale czy to dobry pomysł?
« Ostatnia zmiana: Maj 05, 2010, 21:50:57 wysłana przez IguanaBen »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline _OskaR

  • Użytkownik

# Maj 05, 2010, 21:50:14
Nie ma sensu robić tego dla wszystkich par obiektów, bo przy dużej ich ilości będzie to bardzo mało wydajne. Lepiej posłużyć się np. octree i sprawdzać występowanie kolizji tylko dla tych obiektów, które są stosunkowo blisko siebie.