2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Симуляция столкновения двух шаров
Сообщение24.12.2013, 15:10 
Помогите решить задачу на упругое столкновение двух шаров.

Один шар неподвижный.

Второй шар летит на него и отталкивается на определенный вектор.

Массы шаров равны.

Вектор шара который летит мы знаем.
Когда происходит столкновение мы также вычисляем вектор из расстояния
центров между шарами

Как найти вектор в координатах по которому шар отскакивает?
Векторы лежат в одной плоскости.

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 15:44 
1) закон сохранения импульса системы
2) закон сохранения момента импульса системы, скажем относительно начала координат
3) закон сохранения энергии

надеюсь ,шары гладкие и не крутятся

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 15:52 
Шары не крутятся. Мне надо задачу решить сугубо практически, я потом программу напишу для столкновения
этих шаров и поэтому и нужны координаты вектора X,Y,Z

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 15:55 
координаты вектора находятся из системы уравнений см. выше

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 16:02 
Oleg Zubelevich в сообщении #805515 писал(а):
координаты вектора находятся из системы уравнений см. выше


Наверно надо сделать векторное произведение двух векторов?
Находим перпендикуляр X, Y, Z от нуля.

Находим так.

returnValue.x = left.y * right.z - left.z * right.y;
returnValue.y = left.z * right.x - left.x * right.z;
returnValue.z = left.x * right.y - left.y * right.x;

а как дальше?

-- 24.12.2013, 20:29 --

Вроде как решил!!

Затем надо сделать векторное произведение над векторами (Cross Product) и тогда мы получим искомый вектор.

Перед расчетами надо произвести нормализацию векторов.

Правильно?

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 17:07 
номерами внизу будем помечать шары, индексом +\- будем помечать значение величины после\до удара.


$$\sum_{i=1}^2 m_i v_i^-=\sum_{i=1}^2 m_i v_i^+,\quad \sum_{i=1}^2 m_i [r_i,v_i^-]=\sum_{i=1}^2 m_i [r_i,v_i^+]\qquad (*)$$
где $v_i^-$ -- скорость центра $i$-го шара до удара, $v_i^+$ -- скорость центра $i$-го шара после удара;
$r_i$ -- радиус-вектор центра $i$-го шара в момент удара.
Система уравнений (*) это система 6 линейных уравнений относительно 6 неизвестных -- компонент векторов $v_1^+, v_2^+$.
Однако в общем случае независимых уравнений в этой системе только 5. Поэтому нужно еще одно уравнение:
$$\sum_{i=1}^2 m_i |v_i^-|^2=\sum_{i=1}^2 m_i |v_i^+|^2$$

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 18:13 
Oleg Zubelevich в сообщении #805533 писал(а):
номерами внизу будем помечать шары, индексом +\- будем помечать значение величины после\до удара.


$$\sum_{i=1}^2 m_i v_i^-=\sum_{i=1}^2 m_i v_i^+,\quad \sum_{i=1}^2 m_i [r_i,v_i^-]=\sum_{i=1}^2 m_i [r_i,v_i^+]\qquad (*)$$
где $v_i^-$ -- скорость центра $i$-го шара до удара, $v_i^+$ -- скорость центра $i$-го шара после удара;
$r_i$ -- радиус-вектор центра $i$-го шара в момент удара.
Система уравнений (*) это система 6 линейных уравнений относительно 6 неизвестных -- компонент векторов $v_1^+, v_2^+$.
Однако в общем случае независимых уравнений в этой системе только 5. Поэтому нужно еще одно уравнение:
$$\sum_{i=1}^2 m_i |v_i^-|^2=\sum_{i=1}^2 m_i |v_i^+|^2$$


Это как то сложно 6 линейных уравнений.

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 18:23 
Аватара пользователя
Oleg Zubelevich в сообщении #805515 писал(а):
координаты вектора находятся из системы уравнений см. выше

А где в них сидит направление изменения импульса??

Так что недобор. А 1/ и 2/ - ещё и перебор.

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 18:33 
Аватара пользователя
Oleg Zubelevich вас только запутает в сложностях. Его не интересует добраться до результата. (И вообще не интересует помогать на этом форуме.) Всё очень просто. Переходите в систему отсчёта центра масс шаров. И в этой системе отсчёта соударение тривиально: угол падения равен углу отражения.

 !  Toucan:
См. post805639.html#p805639

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 18:36 
Для тех, кто в танке. Общее решение системы (*) имеет вид $v_i^+=v_i^-+sw_i,\quad s\in \mathbb{R}$. Подставляя это выражение в уравнение для кин. энергии мы находим два значения прараметра $s$. Одно из этих значений, очевидно, равно нулю, а второе как раз и решает задачу.

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 18:40 
Аватара пользователя
Munin в сообщении #805573 писал(а):
И в этой системе отсчёта соударение тривиально: угол падения равен углу отражения.

Наверное, для этой задачи короче будет ввести изменение импульса одного из шаров - направление-то известно.
Далее - сохранение энергии: квадратное уравнение, один из корней нулевой.

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 19:25 
Munin в сообщении #805573 писал(а):
Oleg Zubelevich вас только запутает в сложностях. Его не интересует добраться до результата. (И вообще не интересует помогать на этом форуме.) Всё очень просто. Переходите в систему отсчёта центра масс шаров. И в этой системе отсчёта соударение тривиально: угол падения равен углу отражения.


Красиво сказано - добраться до результата.

Я бы сказал так,добраться до результата сквозь теории. Через Тернии и к звездам.

Я программист практик хочу игру простую сделать шарики гонять.

-- 24.12.2013, 23:29 --

nikvic в сообщении #805579 писал(а):
Munin в сообщении #805573 писал(а):
И в этой системе отсчёта соударение тривиально: угол падения равен углу отражения.

Наверное, для этой задачи короче будет ввести изменение импульса одного из шаров - направление-то известно.
Далее - сохранение энергии: квадратное уравнение, один из корней нулевой.


Там условие есть, что после столкновения между векторами должен быть угол 90 градусов.

Я решил так. Делаю два раза векторное произведение и нахожу заданный вектор.

Завтра напишу программку и проверю на практике как работает это решение.

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 19:40 
Аватара пользователя
Leov в сообщении #805610 писал(а):
Там условие есть, что после столкновения между векторами должен быть угол 90 градусов.

Это не условие, а простенькая теорема: при упругом ударе по неподвижному шару той же массы угол разлёта всегда прямой.
===
У Вас на картинке ерунда - расстояние между центрами шаров.
В задаче должно быть расстояние между исходной прямой - траекторией центра "своего" шара - и центром неподвижного шара, т.н. прицельное расстояние.

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 19:56 
nikvic в сообщении #805622 писал(а):
Leov в сообщении #805610 писал(а):
Там условие есть, что после столкновения между векторами должен быть угол 90 градусов.

Это не условие, а простенькая теорема: при упругом ударе по неподвижному шару той же массы угол разлёта всегда прямой.
===
У Вас на картинке ерунда - расстояние между центрами шаров.
В задаче должно быть расстояние между исходной прямой - траекторией центра "своего" шара - и центром неподвижного шара, т.н. прицельное расстояние.


У меня нарисовано как я буду делать практически с программной точки зрения.Это симуляция на компьютере в игре.

Когда между центрами шаров расстояние будет меньше либо равно чем диаметр шара,я буду обрабатывать ситуацию столкновения.

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

 
 
 
 Re: Симуляция столкновения двух шаров
Сообщение24.12.2013, 20:09 
Аватара пользователя
Leov в сообщении #805627 писал(а):
Когда между центрами шаров расстояние будет меньше либо равно чем диаметр шара,я буду обрабатывать ситуацию столкновения.

У Вас шары из губчатой резины?
Подумайте, что означает """между центрами шаров расстояние будет меньше ...чем диаметр шара :wink:

 
 
 [ Сообщений: 16 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group