Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Naturalne odbicie piłeczki (algorytm)

Ostatnio zmodyfikowano 2009-12-22 19:04
Autor Wiadomość
chesterr
Temat założony przez niniejszego użytkownika
Naturalne odbicie piłeczki (algorytm)
» 2009-12-21 21:41:37
Prubuje odbic jedna pileczke od drugiej. Jednak algorytm:

x++;
jesli kolizja
x--;

mi juz nie wystarcza. Chcialbym aby odbicie bylo maksymalnie naturalne. Poczytalem troche na ten temat i doszedlem do pewnych wnioskow mianowicie:

brak opisu
brak opisu

Jesli pileczka 1 zderzy sie z pileczka 2 to sprawdzil bym dlugosc odcinka a czyli moja zmienna y i dlugosc odcinka c (moja zmienna x). Teraz funkcja cos(a/c) czy cos(x/y) jak kto woli dala by mi jakis wynik. Wedlug tego wyniku wyznaczyl bym nowy kierunek mojej pileczce 1.

Czy moje rozumowanie jest dobre czy ide w zupelnie zla strone ?
P-12381
DejaVu
» 2009-12-21 23:39:39
Hm... generalnie zagadnienia związane z ruchem, zderzeniami itp. nie należą do prostych zagadnień. Pierszą i podstawową kwestią jest to, że realnego modelu nie uzyskasz, który będzie wydajny. Musisz więc ograniczyć się do przybliżonych metod, które poznałeś w gimnazjum/liceum. Drugą sprawą jest to, że powinieneś znać dość dobrze kinematykę i dynamikę po to, aby móc określić jaka energia zostanie przekazana z pierszej piłeczki na rzecz drugiej piłeczki. Jest to zależne między innymi od masy i prędkości chwilowej jeśli dobrze pamiętam, ale to musisz sobie zweryfikować. Trzecią kwestią jest kąt odbicia obiektów gdy nastąpi zderzenie. Tu przyda się dość dobra znajomość matematyki, wiedza co to jest normalna i jak ją wykorzystać w celu ustalenia kąta odbicia. Kąt pod którym obiekt pierwszy uderza w obiekt drugi ustalamy na podstawie wartości prędkości chwili zderzenia. Prędkości składowych tworzą Ci wektor wypadkowy skierowany i to jest podstawą do dalszych obliczeń. Generalnie jest kupa obliczeń do których trzeba solidnie przysiąść i pomyśleć jak te wszystkie fragmenty zebrać do kupy, żeby dało się z tym pracować. Do tego wszystkiego dodam, że na fizyce rozpatrywałeś głównie punkty materialne, a nie bryły co dodatkowo komplikuje obliczenia. Ponadto na fizyce rozpatrywałeś zazwyczaj 2 obiekty, a na scenie zazwyczaj będziesz miał więcej niż dwa obiekty i kolizje będą zachodziły raz z krawędziami, a raz z okręgami, a innym razem jeszcze z inną krzywą. Innymi słowy zagadnienie jest bardzo trudne i na pstryknięcie palcem nie dostaniesz raczej od nikogo rozwiązania. Spróbuj poszukać jakąś książkę z naciskiem na programowanie fizyki gier.
P-12383
pompom
» 2009-12-22 01:10:50
Każdy obiekt ma wektor prędkości, czyli po prostu prędkość w danej osi, (x, y).
Np. obiekt wylatujący z punktu 0,0 z wektorem prędkości (1,1) będzie leciał jednostajnie na ukos (45 stopni) z prędkością sqrt (1^2+1^2) = sqrt 2.

Zderzenie elastyczne (czyli tego którego oczekujesz)
v1' = (m1*v1+m2*v2+m2(v2-v1))/(m1+m2)
v2' = (m1*v1+m2*v2+m1(v1-v2))/(m1+m2)

Czyli dla dwóch wymiarów
v1x' = (m1*v1x+m2*v2x+m2(v2x-v1x))/(m1+m2)
v1y' = (m1*v1y+m2*v2y+m2(v2y-v1y))/(m1+m2)

Zderzenie nieelastyczne: zostawiam bo już zdążyłem napisać

Zderzenia stają się teraz prostsze (bez trygonometrii i kątów) - korzystasz po prostu z zasady zachowania pędu.
mn - masa n-tego obiektu, vn - wektor prędkości n-tego obiektu

obiekt1, O1 = (m1, v1) = (m1, (v1x, v1y))
obiekt2, O2 = (m2, v2)
Masę można traktować jako ilość punktów materialnych o takiej samej masie, więc nowy wektor prędkości dla obiektu 1 zderzającego się z obiektem 2 to
M = m1+m2
v1' = (m1*v1 + m2*v2)/M/(M-m1)
Tak samo dla obiektu 2
v2' = (m1*v1 + m2*v2)/M/(M-m2)
Nie sprawdzałem tego w działaniu - ale chyba jest ok.

Z kolei dla n ciał
M = m1+m2..mn
v1' = (m1*v1 + m2*v2 + .. mn*vn)/M/(M-m1)

(to jest zderzenie całkowicie nieelastyczne. Pierwotna treść posta)

P.S. Jeśli wszystko nie ma masy albo ma taką samą to jest o wiele prościej i dla nieelastycznego
v1' = (v1 + v2)/2
v2' = (v1 + v2)/2
(wektory, czyl v1x' = (v1x + v2x)/2 etc)


--
Kąt pod którym obiekt pierwszy uderza w obiekt drugi ustalamy na podstawie wartości prędkości chwili zderzenia.
Hmm. Dlaczego ustalać? Tutaj chodzi o zwykłe kulki, czyli właśnie punkty materialne.
P-12385
DejaVu
» 2009-12-22 01:39:25
Jeśli kulka nie porusza się ruchem jednostajnym to musisz ustalić jaka prędkość jest kulek w danej chwili jeśli chcesz obliczyć prawidłowo kąt odbicia.
P-12387
pompom
» 2009-12-22 01:47:20
Ale kąt odbicia oblicza się sam, po prostu jako wynikowy wektor prędkości, przynajmniej jeśli o punkty (kulki) chodzi.
Bo jakby to traktować jako duże bryły to masz rację i jest to wtedy skomplikowane
http://www.vobarian.com/collisions/2dcollisions2.pdf

Ruch w jednej chwili zawsze można traktować jako jednostajny, więc przyspieszenie nie ma znaczenia.
P-12388
chesterr
Temat założony przez niniejszego użytkownika
» 2009-12-22 18:56:50
...ale ja sobie chcialem odbic tylko 2 pileczki ;(

no to grubo, przeczytalem wasze posty z 5 razy, (pompoma chyba 10) i widze ze bez jakiejs pozycji czytelniczej sie nie obedzie. Sprobuje jeszcze przez swieta wykorzystac te wzory dla ciala elastycznego (bo ote podobno mi chodzi ;p)

Najgorsze jest to ze wkoncu cos zaczyna sprawiac mi ogromna przyjemnosc a tu nagle pojawia sie matematyka no i fizyka z ktorej jestem juz totalne dno.
P-12390
DejaVu
» 2009-12-22 19:04:54
Dzięki informatyce zrozumiesz sporą część matematyki i fizyki :) w szczególności podczas pisania gier :) Dasz radę :)
P-12391
« 1 »
  Strona 1 z 1