Kolizja kul, wektory i macierz obrotu

Przestrzenie wektorowe, bazy, liniowa niezależność, macierze.... Formy kwadratowe, twierdzenia o klasyfikacji...
Awatar użytkownika
trelek2
Użytkownik
Użytkownik
Posty: 114
Rejestracja: 23 wrz 2008, o 13:26
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 23 razy
Pomógł: 1 raz

Kolizja kul, wektory i macierz obrotu

Post autor: trelek2 »

Witam!
Piszę program w JAVIE symulujący stół bilarodwy ale nie mam problemu z kodem tylko z matematyką.
Dokładnie to problem z elastycznymi kolizjami kul.
Teoretycznie obliczenie wektorów prędkości po kolizji wygląda tak:
Bierzemy wektor pomiędzy środkami kul i części wektorów prędkości które są do niego prostopadłe zostają nie zmienione, a częci które są równoległe są obliczane z poniższych wzrorów:

\(\displaystyle{ v '_{1} = \frac{2m _{2}v _{2}-v _{1}(m _{2} -m _{1}) }{m _{1}+m _{2} }}\)

\(\displaystyle{ v '_{2} = \frac{2m _{1}v _{1}-v _{2}(m _{1} -m _{2}) }{m _{1}+m _{2} }}\)
Co robię potem:
Znajduję wspomniany wektor pomiędzy środkami kul i znajduke kąt polarny \(\displaystyle{ \theta}\)
jak się patrzy na współrzędne \(\displaystyle{ (r, \theta)}\).
Wtedy mnożę wektory prędkości przez macierz obrotu w kierunku rosnącego \(\displaystyle{ \theta}\):

(cos(\(\displaystyle{ \theta}\)) sin(\(\displaystyle{ \theta}\)))
(-sin(\(\displaystyle{ \theta}\)) cos(\(\displaystyle{ \theta}\)))
(przepraszam, nie wiem jak się robi macierze w latexie)
Wtedy biorę współrzędne x względem nowego układi i używam wzorów podanych na początku.
One chyba są równoległe do wektoru łączącego środki kul?
Współrzędnych y w nowym układzie nie ruszam.
Teraz jak wystarczy sporwrotem włożyć wszystko do starego układu więc znowu wymnażam przez podaną macierz tyle że z kątem \(\displaystyle{ - \theta}\)
Noi wydawało mi się że to będzie działać...
Ale niestety okazuje się że pęd nie jest zachowany i energia kinetyczna też rośnie.
Np. dla 2 kul o tej samej masie i prędkościach początkowych 0 i 80, po zderzeniu nie dokładnie centralnym pręskości są 19 i 77..... Czyli znacznie więcej niż 80.
Jeśli ktoś znajdzie błąd będę bardzo bardzo wdzięczny, bo już siedze nad tym cały dzień i wszstko by działało w programie gdyby nie to że piłki mi przyśpieszają.
ODPOWIEDZ