Java игра в прыгающий мяч - сценарий с вращающимся шаром - PullRequest
1 голос
/ 04 февраля 2011

Я пишу игру с прыгающим мячом на Java для телефонов Android. Кажется, все отлично работает, за исключением небольшой проблемы со столкновениями и коэффициентом восстановления.

Когда шар сталкивается с поверхностью, вычисляется вектор нормали этой поверхности (nx и ny), и направление вектора шара (dx и dy) отражается в этом векторе нормали.

В данный момент я использую 0,9 в качестве коэффициента восстановления и умножаю и dx, и dy на это значение, что, очевидно, слишком упрощенно, поскольку не правильно имитирует прокатку.

Существует ли простая формула для более точного расчета новых dx и dy, так что если мяч движется почти параллельно склону, когда он сталкивается, он теряет скорость меньше, чем если он сталкивается перпендикулярно.

Извиняюсь за то, что не опубликовал ни один мой код, я не на своем компьютере, поэтому могу опубликовать его позже, если это поможет кому-либо понять.

Спасибо за любую помощь заранее.

Ответы [ 3 ]

2 голосов
/ 04 февраля 2011

Коэффициент восстановления связан с относительной эластичностью сталкивающихся объектов. Это упрощенный способ учесть тот факт, что шар и поверхность деформируются при ударе. Часть энергии деформации теряется (например, генерируется тепло, звуковые волны и т. Д.), Но большая ее часть возвращается к «отталкиванию» другого тела.

Никакая энергия не теряется, если коэффициент восстановления равен 1,0. Думайте об этом как о «факторе выдумки», чтобы вам не приходилось решать проблему динамической эластичности.

Роллинг это другое дело.

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

Вам также понадобится другое уравнение помимо смещений в направлениях x, y. Вам понадобится еще один для крутящего момента вокруг оси z относительно центроида шара.

Уравнения движения Ньютона суммируют силы в направлениях x и y и моменты вокруг оси z для шара.

0 голосов
/ 04 февраля 2011

Ваш лучший выбор, вероятно, - ссылаться на учебник по технике или физике. Я быстро выполнил поиск в Google по запросу " коэффициент косой отдачи " и получил документ Scribd, в котором есть немного полезной информации: http://www.scribd.com/doc/28272448/46/Coefficient-of-restitution

0 голосов
/ 04 февраля 2011

Возможно, я ошибаюсь, но решением этой проблемы будет вычисление угла мяча, что означает артан (dy / dx).

Имея этот угол относительно вашего происхождения, вы могли бы затем умножить на косинус этого угла. Если бы она была полностью параллельной, скорость оставалась бы неизменной, а если бы она была полностью перпендикулярна, скорость была бы равна нулю.

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

Надеюсь, это поможет!

...