canvas столкновение объектов
Есть такой вот код.
https://jsfiddle.net/xdLnw4zg/4/ На строке 120 - функция которую я написал для столкновения объектов - listenCollision(используемая внутри функция distance объявлена вверху, она расчитывает расстояние между шарами). Она работает, но при столкновении на высокой скорости шариков, они прилипают друг к другу. Есть варианты как с этим бороться? |
Rise,
В initDependents - 70 строка, в value - находится функция. начинаю понимать что это ужасно:lol: |
|
именно
сейчас код рассчитан только на самый элементарный кейс - когда два шара двигаются навстречу друг другу, с одинаковыми скоростями, и их центры едут по одной и той же прямой (центральное соударение). для общего случая надо будет упороться с формулами, используя закон сохранения импульса. А если делать совсем как в жизни, то придется ещё и моменты импульсов добавить - шары при нецентральном соударении могут менять скорость вращения. Там полнейший ад получается :) |
Delgus, позвольте спросить, извините за назойливость. Что Вы сделали, чтобы код заработал?
|
Rise,
Alexandroppolus, Я хотел сделать самый простой вариант столкновения, поэтому пренебрег физикой. Для таких вещей,конечно,надо углубляться в формулы или брать готовые движки) |
Strongman,
Добавил проверку на направление движения, но всех проблем конечно это не решило, при разных скоростях и радиусах шары все равно залипают |
* Но код и так работал, просто совсем некорректно. А сейчас менее неккоректно, но все равно очень криво)
|
delgus,
это elastic collision, если интересно. |
Rise,
Спасибо огромное. Поизучаю как-нибудь. Даже пример нашел на js http://jsfiddle.net/inkfood/juzsR/ |
Часовой пояс GMT +3, время: 16:41. |