Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 07.05.2004, 16:07
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 1  
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
The bomb! Упругий нецентральный удар шаров

Привет, Народ!
На флеш-сайтах можно встретить много примеров соударения шаров. Но, или в примерах простое отталкивание (инверсия одной координаты), или идет постепенное затухание.
Может кто подскажет код к следующей задачи:
Нужно смоделировать упругое нецентральное соударение двух разных по диаметру (диаметр символизирует массу) шаров с сохранением импульса.
Прошу математиков-программистов помочь.
На сайте есть чудесный пример "Шарики"
http://www.flasher.ru/src/category_41_1/
Но даже если убрать "гравитацию" и "трение" идет постепенное замедление шаров.
Спасибо.

Старый 07.05.2004, 22:34
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
а диссипативные потери при деформации не надо учитывать?
ты давай формулы давай, а там и сообразим

Старый 08.05.2004, 11:39
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 3  
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Цитата:
Оригинал написал(а) silin
а диссипативные потери при деформации не надо учитывать?
Привет, Silin!
Юмор оценил. Отвечаю: "Кроме диссипативных потерь не надо учитывать искривление квадрупольного момента при входе в квазистатическое поле потенциальной ямы". Короче, относительно того, что ежели так сказать, то оно конечно!

Ну а теперь к делу.
Просмотри, плз, исходник, и если можешь, подправь код в такую сторону:
- при соударении большого и малого шаров приращение скорости малого шара должно быть намного больше другого(закон инерции + сохранение импульса);
- при непродолжительном наблюдении за настоящим роликом видно заметное замедление всех шаров , чего не требуется.
Первостепенно желательно устранить второй "деффект".
Спасибо.
Вложения
Тип файла: zip udarballs.zip (4.7 Кб, 449 просмотров)

Старый 11.05.2004, 17:47
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 4  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
тоже не строгое решение:при устранении указанных дефектов возникли другие, но может сгодится
нормальное решение (с соблюдением законов сохранение) тоже реально, но повозиться надо
Вложения
Тип файла: zip ball.zip (9.3 Кб, 482 просмотров)

Старый 11.05.2004, 18:29
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 5  
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
- Ну, ты могЁшь!
- Не могЁшь, а мОгешь!!!
(из фильма "В бой идут одни старики")

Привет, Silin!
Спасибо, порадывал оригинальным кодом. Есть теперь над чем голову по вечерам поломать.
"Картинка" на самом деле приблизилась к реальности. Единственное но, стала частенько замирать - а комп не слабый (может все-таки проклятая рекурсия ). Надо проверить как будет с 50-тью экземплярами работать - диффузию изображать.
Но, пища для серого вещества появилась
Спасибо.
Ежели, что рожу - пришлю.
Пока.

Старый 13.05.2004, 17:52
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
держи 'честный' вариант
Вложения
Тип файла: zip ballr.zip (6.4 Кб, 561 просмотров)

Старый 14.05.2004, 11:30
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 7  
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Привет, Silin!
Спасибо, чуть позже разберусь. Есть новая работа срочная.
Визуально пока разницу не обнаружил. Все равно есть переодическое замирание "картинка" на пол-секунды" чаще чем обычно, хотя проц загружен на 15-20%.

Вопрос окончательно не закрыт. Тема очень интересная в плане разработки моделей диффузии, сохранения импульса, центральных и не центральных ударов и тптд...прст...


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

Старый 15.05.2004, 12:05
SamTakoy вне форума Посмотреть профиль Отправить личное сообщение для SamTakoy Найти все сообщения от SamTakoy
  № 8  
SamTakoy

Регистрация: Sep 2001
Адрес: Bryansk, Russia
Сообщений: 56
Отправить сообщение для SamTakoy с помощью ICQ
Привет.

Если схватить один шарик и натащить на другой то они залипают.
Чтобы этого избежать, не надо проверять на столкновение 2 шара, если их векторы скорости направлены в разные стороны, даже при пересечении (шары разлетаются уже, либо один стоит, а другой отлетает от него).
Проверяется просто:

nx = ball2._x - ball._x;
ny = ball2._y - ball._y;

if(
(ball.vx*nx+ball.vy*ny )>0 ||
(-ball2.vx*nx-ball2.vy*ny )>0
){ можно проверять на пересечение }

Здесь
ball, ball2 - шарики;
vx, vy - составляющие их скоростей.
nx, ny - вектор - направленный от центра одного шара к другому.
Проверяется знак скалярного произведения векторов => определяем факт того что хоть один шар движется в направлении другого.

А в функции пересечений у тебя слишком много синусов, косинусов, извлечений корня и т.д. Можно и проще. Подумаю, может напишу как

Старый 15.05.2004, 12:44
Жень Шень вне форума Посмотреть профиль Отправить личное сообщение для Жень Шень Найти все сообщения от Жень Шень
  № 9  
Жень Шень
 
Аватар для Жень Шень

блогер
Регистрация: Feb 2004
Адрес: Украина
Сообщений: 1,180
Записей в блоге: 3
Отправить сообщение для Жень Шень с помощью ICQ
Привет, SamTakoy!
Спасибо за участие.
Цитата:
Оригинал написал(а) SamTakoy
не надо проверять на столкновение 2 шара, если их векторы скорости направлены в разные стороны, даже при пересечении (шары разлетаются уже, либо один стоит, а другой отлетает от него).
Возможны варианты при разнонаправленых векторах:
Шары расходятся не встречаясь.
Шары перекрываються после получения приращения.
Траектории перекрываються после получения приращения.

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

Но! Замечание принимается для дальнейшего "обгладывания"
Ну, SamTakoy, жду когда мысль посетит

Старый 15.05.2004, 14:14
SamTakoy вне форума Посмотреть профиль Отправить личное сообщение для SamTakoy Найти все сообщения от SamTakoy
  № 10  
SamTakoy

Регистрация: Sep 2001
Адрес: Bryansk, Russia
Сообщений: 56
Отправить сообщение для SamTakoy с помощью ICQ
В общем, я как-то делал бильярд. Основная идея такая.

При столкновении двух шаров - "мысленно" проводим линию между их центрами. И переходим к новой системе координат,
в которой эта линия становится осью ox. Т.е. преобразуем в эту систему координат составляющие их скорости: vx и vy.
Рассматриваем удар в этой системе координат (получается простейший случай столкновения). В бильярде для шаров одинакового размера и массы я просто менял горизонтальные составляющие скоростей (т.к. удар абсолютно упругий), а вертикальные оставлял прежними (т.к. взаимодействие только по горизонтали, то вертикальные составляющие не влияют на удар).
После этого найденные компоненты скоростей возвращал в старую систему координат.
И вуаля! Все работает

Для шаров разной массы отличие будет только в том как обменивать их горизонтальные составляющие скоростей (в зависимости от массы). (над этим придется подумать )

Надеюсь, я понятно изложил

Можешь еще вот здесь посмотреть по столкновениям:
http://pmg.org.ru/russian/nehe/nehe30.htm

Создать новую тему   Часовой пояс GMT +4, время: 13:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:47.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.