Столкновение игры в бильярд - PullRequest
0 голосов
/ 27 февраля 2012

У меня есть выбор написать бильярдную игру для класса. Все работает нормально, но я бы хотел улучшить реалистичность столкновений с мячом.

Для каждого мяча у меня есть прямоугольник пигамов, то есть центр мяча, диаметр мяча и положение в игре. А также вектор скорости (u_x, u_y).

В это время я проверяю столкновение с colliderect, но я могу изменить его, измеряя расстояние между центрами шаров.

Я читал о сохранении уравнений импульса, но это не учитывает положение мяча. Разве это не два одинаковых фронтальных удара, чем боковой удар.

Кто-то может помочь мне в формуле для новых скоростей мяча после столкновения с учетом положения мяча в момент удара . Большое спасибо!

1 Ответ

1 голос
/ 16 апреля 2012

Модуль euclid поможет.Он содержит векторный класс, который имеет normal (), dot () и т. Д. * http://partiallydisassembled.net/euclid.html (Вы можете скопировать модуль в папку вашего проекта без необходимости установки.)

см. формулы: https://gamedev.stackexchange.com/a/7901/6776 или http://archive.ncsa.illinois.edu/Classes/MATH198/townsend/math.html#COLLISION

Примечание: чем сложнее становится ваша физика, тем больше вам нужно использовать физический движок, например [введите описание ссылки здесь]пимунк] или ODE.Но это хороший учебный опыт.

...