Szukam algorytmu do obliczania kierunku i prędkości piłek w grze bilardowej. Jestem pewien, że musi istnieć jakiś rodzaj kodu typu open source, ponieważ gry w basenie są jednymi z najstarszych gier komputerowych, jakie pamiętam.
Mam na myśli, że kiedy jedna piłka uderza drugą, potrzebuję algorytmu, aby obliczyć kierunek obu z nich. Będzie to zależeć od dokładnego kąta ich uderzenia i prędkości.
Chcę poćwiczyć kodowanie Java, więc szukam kodu Java lub pakietu zawierającego ten typ kodu.
Odpowiedzi:
Podczas gdy podstawowe wykrywanie / reakcja na kolizję sfera-kula jest dość prosta, wykonanie jej wystarczająco dokładnie dla dobrej symulacji puli byłoby trudniejsze, ponieważ musiałbyś poradzić sobie ze spinem.
Czy zdajesz sobie sprawę z istnienia silników fizyki? Oto niektóre popularne przykłady (i mogą one zrobić znacznie więcej niż tylko kolizje z piłką bilardową). Prawdopodobnie dobry wybór do tworzenia gier bilardowych, ale nie tyle do nauki Java ...
W 2D
Box2D: http://www.box2d.org
Wiewiórka: http://code.google.com/p/chipmunk-physics/
W 3D
Bullet: http://bulletphysics.org/
ODE: http://www.ode.org
Jeśli tworzysz komercyjną grę o dużym budżecie:
Havok: http://www.havok.com
źródło
Możesz zainteresować się artykułem „ Lekcje sali bilardowej: szybkie, dokładne wykrywanie kolizji między kołami lub sferami ”, jeśli zdecydujesz się wybrać trasę „rzuć własną”. Nie jest on specyficzny dla Javy, ale omawia niektóre algorytmy związane z prostą symulacją.
źródło
W przypadku prostej gry w bilard, w której spin nie jest modelowany, algorytm jest dość prosty.
W pseudo-kodzie staje się to:
Możesz pominąć masę z algorytmu, jeśli wszystkie piłki mają tę samą masę, a także przyjąć stały promień dla wszystkich piłek w grze bilardowej, ale kod będzie bardziej przydatny bez tych uproszczeń.
Kod oparty jest na tym samouczku , ale pamiętam, że mnożenie impulsów było tam nieprawidłowe.
źródło