Страница 1 из 7

Шары

Добавлено: 19 ноя 2009, 20:02
NewUser
Пишу прогу ,летают в замкнутой области много шариков ,мне надо просчитывать их соударения (нецентральный упругий удар) и рассчитать траекторию их отскока(вектор направления).Для каждого шара у меня имеются его координаты и вектор направления.
Помогите рассчитать угол поворота вектора направления после удара.

Шары

Добавлено: 19 ноя 2009, 21:19
grigoriy
Соедините центры 2-х сталкивющихся шаров и на этот отрезок (назовем AB)
спроектируйте скорости шаров. Назовем их нормальными проекциями.
Найдите также касательные проекции - проекции на перпендикулярное
к AB направление. Рассчитайте новые нормальные проекции скоростей
по формулам для центрального соударения. Касательные проекции
остаются неизменными.

Шары

Добавлено: 20 ноя 2009, 03:34
fir-tree
Причём отрезок надо брать в момент столкновения.

Шары

Добавлено: 20 ноя 2009, 04:04
ALEX165
И если шары одинаковые, они просто обменяются нормальными проекциями скоростей.

Шары

Добавлено: 20 ноя 2009, 04:58
Pyotr
NewUser писал(а):Source of the post
Пишу прогу ,летают в замкнутой области много шариков ,мне надо просчитывать их соударения (нецентральный упругий удар) и рассчитать траекторию их отскока(вектор направления).Для каждого шара у меня имеются его координаты и вектор направления.
Помогите рассчитать угол поворота вектора направления после удара.

Если Вам удастся написать такую программу - попробуйте для какого-нибудь варианта обратить время. Вы будете удивлены тем, насколько быстро система "забудет" свою историю и сойдет c траектории, по которой она развивалась, когда время текло в положительном направлении. Отсюда вывод: строго считать эволюцию системы большого смысла не имеет, можно применить метод Монте-Карло.

Шары

Добавлено: 20 ноя 2009, 06:01
grigoriy
fir-tree писал(а):Source of the post
Причём отрезок надо брать в момент столкновения.


Спасибо. Совершенно верно, забыл упомянуть.
Поскольку момент столкновения в программе отслеживается
по достижении расстоянием между поверхностями некоторой
минимальной величины, то нужно после вычисления
новых скоростей дать шарам разойтись на расстояние, превышающее
"допуск", прежде чем опять анализировать их близость.
Иначе может возникнуть "залипание" двух шаров - при малых
скоростях они не успеют за квант времени, принятый в программе,,
разойтись на расстояние, большее "допуска", как их опять заставляют
сталкиваться.

Шары

Добавлено: 20 ноя 2009, 06:30
fir-tree
Pyotr писал(а):Source of the post Если Вам удастся написать такую программу - попробуйте для какого-нибудь варианта обратить время. Вы будете удивлены тем, насколько быстро система "забудет" свою историю и сойдет c траектории, по которой она развивалась, когда время текло в положительном направлении. Отсюда вывод: строго считать эволюцию системы большого смысла не имеет, можно применить метод Монте-Карло.

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

grigoriy писал(а):Source of the post Иначе может возникнуть "залипание" двух шаров - при малыхскоростях они не успеют за квант времени, принятый в программе,,разойтись на расстояние, большее "допуска", как их опять заставляютсталкиваться.

Это вы что-то неправильно реализовывали. Если шары ещё перекрываются, но уже разлетаются (скорости направлены прочь друг от друга), их никто не должен заставлять сталкиваться.

A вообще имеет смысл рассчитать результат столкновения точно, a не для момента столкновения в выбранный дискрет времени, и подставить уже его результат.

Шары

Добавлено: 20 ноя 2009, 06:54
Pyotr
fir-tree писал(а):Source of the post
...Только надо пояснить, что забывает система свою историю из-за численных погрешностей.

B численном эксперименте, конечно, по этой причине. Ho удивительным образом эти "погрешности" приводят к увеличению, a никак не к уменьшению энтропии, подтверждая, тем самым, H-теорему Больцмана.

Шары

Добавлено: 20 ноя 2009, 07:26
grigoriy
grigoriy писал(а):Source of the post Иначе может возникнуть "залипание" двух шаров - при малыхскоростях они не успеют за квант времени, принятый в программе,,разойтись на расстояние, большее "допуска", как их опять заставляютсталкиваться.

Это вы что-то неправильно реализовывали. Если шары ещё перекрываются, но уже разлетаются (скорости направлены прочь друг от друга), их никто не должен заставлять сталкиваться.

A вообще имеет смысл рассчитать результат столкновения точно, a не для момента столкновения в выбранный дискрет времени, и подставить уже его результат.
Может быть. Это было лет 15 назад, программу я писал ради тренировка при изучении Паскаля, тщательно
ee не вылизывал. Помню, что такой эффект на каком-то этапе был - мой несовершенный алгоритм
постоянно пускал такие пары "в обработку", не давая им двигаться. Вдруг и NewUser столкнется c этим.

Шары

Добавлено: 20 ноя 2009, 12:05
NewUser
Разложить по проекциям я в ближайшее время попробую.Про обращение времени вообще не понял, вы про что?A насчет посчитать зарание момент когда столкнутся,проблема в том , что тут летают не 2 и не 3 шарика, a до 50,радиусы и скорости у всех одинаковые.Погрешность в любом случае будет,легче развести их потом на мин.расстояния когда прога не скажет что они столкнулись.