Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   canvas столкновение объектов (https://javascript.ru/forum/misc/74914-canvas-stolknovenie-obektov.html)

delgus 16.08.2018 12:37

canvas столкновение объектов
 
Есть такой вот код.

https://jsfiddle.net/xdLnw4zg/4/

На строке 120 - функция которую я написал для столкновения объектов - listenCollision(используемая внутри функция distance объявлена вверху, она расчитывает расстояние между шарами). Она работает, но при столкновении на высокой скорости шариков, они прилипают друг к другу. Есть варианты как с этим бороться?

delgus 16.08.2018 13:05

Rise,
В initDependents - 70 строка, в value - находится функция. начинаю понимать что это ужасно:lol:

delgus 16.08.2018 13:11

вот так работает вроде)

https://jsfiddle.net/xdLnw4zg/22/

Alexandroppolus 16.08.2018 14:33

именно
сейчас код рассчитан только на самый элементарный кейс - когда два шара двигаются навстречу друг другу, с одинаковыми скоростями, и их центры едут по одной и той же прямой (центральное соударение).

для общего случая надо будет упороться с формулами, используя закон сохранения импульса. А если делать совсем как в жизни, то придется ещё и моменты импульсов добавить - шары при нецентральном соударении могут менять скорость вращения. Там полнейший ад получается :)

Strongman 16.08.2018 15:07

Delgus, позвольте спросить, извините за назойливость. Что Вы сделали, чтобы код заработал?

delgus 16.08.2018 15:15

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

delgus 16.08.2018 15:18

Strongman,
Добавил проверку на направление движения, но всех проблем конечно это не решило, при разных скоростях и радиусах шары все равно залипают

delgus 16.08.2018 15:20

* Но код и так работал, просто совсем некорректно. А сейчас менее неккоректно, но все равно очень криво)

Rise 16.08.2018 15:30

delgus,
это elastic collision, если интересно.

delgus 16.08.2018 15:43

Rise,
Спасибо огромное. Поизучаю как-нибудь. Даже пример нашел на js

http://jsfiddle.net/inkfood/juzsR/


Часовой пояс GMT +3, время: 16:41.