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.