Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с физикой бильярда 
:(
    Опции темы
MasterSID
Дата 15.8.2005, 12:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Хотел вот написать бильярдно-подобную игру, но вот проьлема - не силен в физике.

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

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

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

В общем-то просьба помочь с формулами столкновения и движения, а также определения где был шар в момент удара (до пересечения площадей шаров).

Заранее спасибо
  Вверх
Akina
Дата 15.8.2005, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



1) Это надолго - рекомендую зарегистрироваться.
2) Соударение считается упругим - следовательно система из 2 линейных уравнений: сохранение энергии и импульса (векторно).
3) Соударение - если расстояние между центрами = сумме радиусов, и никаких площадей.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Амортизатор
Дата 15.8.2005, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Вообще-то если не считать шары "материальными точками" (как любили говорить в школе smile ), все будет не так просто. Если удар нецентральный, для полной физической картины нужно учитывать трение между шарами, момент инерции, а для просчета дальнейшего движения действие кориолисовых сил.


--------------------
Поехали!
PM MAIL   Вверх
Akina
Дата 15.8.2005, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата
действие кориолисовых сил.

я плакаль!




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
maxim1000
Дата 15.8.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: 33
Всего: 110



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


--------------------
qqq
PM WWW   Вверх
Akina
Дата 15.8.2005, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(maxim1000 @ 15.8.2005, 14:30)
вращение в любом случае придется учитывать

именно. и различие трения справа и слева от точки касания. однако это не Кориолис...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
MasterSID
Дата 15.8.2005, 16:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да, именно по сумме двух радиусов я и определяю столкновение, просто я слово площадь для пущей убедительности написал smile

Проблема все равно имеет место быть. Сильно крутых расчетов мне не нужно. Главное просто чтобы шары летали более менее реалистично.

углы у меня считаются так:
&$hiter - экземпляр шара, столкнувшегося с данным
Energy - энергия шара. На каждом шаге уменьшается на 0.01
GetCenter - возвращает координаты центра шара
GetDIrection - возвращает угол, под которым шар движется
M_PI - константа PI

если что-то не понятно - поясню

function HitBy(&$hiter){
$hiter->SetEnergy($hiter->GetEnergy()-$hiter->GetEnergy()*0.5);
$this->energy+=$hiter->GetEnergy();
$hiter->GetCenter(&$h_x, &$h_y);
$this->GetCenter(&$x, &$y);
$this->SetDirection($this->HitAngle($x-$h_x, $y-$h_y));
$da= $hiter->GetDirection() - $this->GetDirection();
$hiter->SetDirection($hiter->GetDirection()+$da);
}

function HitAngle($x, $y){
if ( abs($x) < 0.05 ) $na = M_PI/2;
else $na = atan(abs($y/$x));
if ( $x < 0 ) $na = M_PI - $na;
if ( $y < 0 ) $na = -$na;
return (float)$na;
}

  Вверх
DENNN
Дата 15.8.2005, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 1
Всего: 43



Интересно, а твои шары могут "подскакивать" и затем соударяться?
PM ICQ   Вверх
MasterSID
Дата 15.8.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2005

Репутация: нет
Всего: нет



В смысле подскакивать? В трехмерном пространстве? Нет - все действие происходит только в одной плоскости - в 2х мерном пространстве. Задача банальная, но опять же повторюсь - я не очень силен в физике
PM MAIL   Вверх
SoWa
Дата 15.8.2005, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Но сделай сначала, чтобы удары были центральными. А потом, когда это будет готово, делай так:
Я думаю, что любой удар не "центр в центр" от одной точки отсчета является центральным от другой. Но это, как я сказал, потом, наверно smile


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Akina
Дата 15.8.2005, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(SoWa @ 15.8.2005, 22:49)
любой удар не "центр в центр" от одной точки отсчета является центральным от другой

Да, но эта "другая" система координат не является инерционной:
Цитата(MasterSID @ 15.8.2005, 17:36)
Energy - энергия шара. На каждом шаге уменьшается на 0.01




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
MasterSID
Дата 16.8.2005, 06:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.8.2005

Репутация: нет
Всего: нет



Нет, ну углы высчитываются более-менее правдоподобно. Мне нужны формулы движения и определения местонахождения шара в определенный момент времени. желательно чтобы все это было завязано на dX и dY
PM MAIL   Вверх
Akina
Дата 16.8.2005, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(MasterSID @ 16.8.2005, 07:44)
не нужны формулы движения и определения местонахождения шара в определенный момент времени

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
RA
Дата 16.8.2005, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: нет
Всего: 115



Кстати можно добавить рандомное искажение траэктории движения (это придаст небольшую реалистичность), ибо сукно не бывает идеальным.
PM   Вверх
Akina
Дата 16.8.2005, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(RAdmin @ 16.8.2005, 09:51)
можно добавить рандомное искажение траэктории движения

это не влияет на алгоритмы расчета, пока необязательно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0931 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.