Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Полигон
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 21:39 Gin Beginner
 
 
Во Флориде и в Королевстве сейчас  21:45[Войти] | [Зарегистрироваться]

Обсуждение материала
Модель соударения двух бильярдных шаров
Полный текст материала


Другие публикации автора: Сергей Басков

Цитата или краткий комментарий:

«... Программа "Бильярд" реализует математическую модель соударения двух шаров. ...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.




Смотрите также материалы по темам:
[Преобразование и расчет координат]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 21

08-03-2007 04:01
Уважаемые участники и автор!
Я решил разобраться таки с геометрией данного процесса (столкновения шаров) и оптимизировать расчёты. Вот что у меня вышло: (привожу только смысловой кусок кода, остальное, имхо, вполне ясно)

type
TBall = record
  mx,my:extended; //координаты центра шара
  dx,dy:extended;// текущее приращение изменения координат
end;

var
balls:array [1..2] of Tball;
a,b,p1,p2,p3,d1,d2,dist:extended;

//проверка столкновения двух шаров

a:=balls[i].mx-balls[j].mx;
b:=balls[i].my-balls[j].my;
dist:=sqrt(sqr(a)+sqr(b));
if dist<=30 {диаметр шара} then begin
p1:=a*b/sqr(30);
p2:=sqr(a/30);
p3:=sqr(b/30);
d1:=balls[i].dy*p1+balls[i].dx*p2-balls[j].dy*p1-balls[j].dx*p2;
d2:=balls[i].dx*p1+balls[i].dy*p3-balls[j].dx*p1-balls[j].dy*p3;

balls[i].dx:=balls[i].dx-d1;
balls[i].dy:=balls[i].dy-d2;

balls[j].dx:=balls[j].dx+d1;
balls[j].dy:=balls[j].dy+d2;
end;

Вот и всё! :)


11-05-2006 21:41
Я проверил - ссылки не битые.


11-05-2006 11:11
Ссылка битая, киньте кто-нибудь исходники пожалуйста.


19-01-2006 07:31
говорить нечего, вот кусок кода
     bet=atan2(b.y-a.y,b.x-a.x);
x1=a.dx*cos(-bet)-a.dy*sin(-bet);
y1=a.dx*sin(-bet)+a.dy*cos(-bet);
x2=b.dx*cos(-bet)-b.dy*sin(-bet);
y2=b.dx*sin(-bet)+b.dy*cos(-bet);
a.dx=x2*cos(bet)-y1*sin(bet);
a.dy=x2*sin(bet)+y1*cos(bet);
b.dx=x1*cos(bet)-y2*sin(bet);
b.dy=x1*sin(bet)+y2*cos(bet);
много раз проверял, физика соблюдается,
можно много добавить, например кручение
принцип прост, вычисляем угол соударения относительно экранной системы координат, затем поворачиваем, тогда ось соударения превращается в ось Х
а формула соударения проще простого
Y-составляющие скоростей не меняются, а Х-состовляющие шаров меняются местами,
после этого все поворачиваем на тот же угол но с минусом.

при этой формуле при попадании лол в лоб в стоячий шар, биток останется на месте


10-06-2004 03:37
нужен сам принцип столкновения а не физический расчет заранее спасибо


10-06-2004 03:35
Помогите достать код столкновения шара от стены через сообщения в Vb.Net


11-05-2004 10:34
Спасибо, люди, очень помогли. Не надо будет гемориться. Такая незначительная часть проета, а столько возни!
 Spe


09-09-2003 13:58
Запустил Вашу программу под Win98.
Вылезло два глюка:
1) Мигает при перерисовке экран
2)Чего то шарик с места не двигается,а кий вокруг него кружит,хотя anykey я нажимал (


02-06-2003 09:18
сообщение от автора материала
Извиняюсь, что пока ссылка на www.baskov.spb.ru временно не работает.
Есть зеркало: http://billiard-bsv.narod.ru
 Bask


11-02-2003 17:28
Конечно модель не похожа на настоящую, исключая пожалуй столкновение шаров.

Могу посоветовать литературу "Amateur Physics for amateur pool player", и книгу 56 кажеца года выпуска, в библиотеках еще можно найти, автор Кориолис "Изложение основ теории и построений, объясняющих движение шаров". Чтение мягко скажем "занимательное".

Само движение шаров у вас неверное, хотя теория столкновений оригинальна, но пока мне непонятна. Ещеб кручение добавить :)


11-11-2002 16:28
сообщение от автора материала
Посмотрите обновление:
http://www.baskov.spb.ru/projects/billiard/billiard.zip
 Bask


10-11-2002 15:23
сообщение от автора материала
Попробуйте использовать такой файл settings.ini:
[Phisics]
ballSize=1
PocketSize=0
MaxEnergy=40
CueLength=200
PyramidHeight=23
Friction=1
AngleStep=0,03
MovementLimit=0
TimeInterval=20
ColorBalls=1

Чем-то похоже на броуновское движение...
 Bask


06-11-2002 15:26
Это ещё упрощенная модель, учитывая то, что мы не в праве рассматривать процесс соударения как мгновенный и недеформационный)))


06-11-2002 15:23
з-н сохранения импульса тут не при чем. Он отвечает только за направление скорости. Сама скорость вычисляется по з-ну сохранения энергии, который помимо всего содержит энергию вращающегося тела (это важно!) (I*w^2)/2, где I-момент инерции (для шара (2/5)*m*r^2), а w - угловая скорость. + Потеря энергии на трение м/у ворсом сукна и поверхностью другого шара. Там будет интегральная величина, поскольку чужой начинает двигаться в процессе удара, следовательно относительная скорость точек поверхности двух шаров меняется. А с кручением все достаточно тривиально. Вводим полярную 3D-систему и ,оперируя векторами сил трения при кручении, высчитываем интегральное воздействие на шар со стороны другого. А там обратный ход - зная получаемыю энергию и скорость, легко найти и угловую скорость чужого шара.


05-11-2002 12:53
А закон сохранения импульса у тебя стал соблюдаться!


05-11-2002 11:35
сообщение от автора материала
Посмотрите изменения в программе... Вроде бы, стало более реальным соударение (без кручения ;))
 Bask


05-11-2002 09:12
сообщение от автора материала
to: Кода Виктор
В файле settings.ini можно поменять коэффициент трения Friction и MovementLimit - значение минимального приращения скорости, при котором шар считается остановленным.

Всем спасибо за обсуждение и уместную критику - при возможности я это учту...
 Bask


05-11-2002 09:04
сообщение от автора материала
Я не задавался целью реализовать ПОЛНУЮ ФИЗИЧЕСКУЮ МОДЕЛЬ соударения двух шаров. Кстати, закон сохранения импульса у меня там не соблюдается (т.е, при центральном ударе по стоящему шару биток должен остаться на месте, а вся энергия должна перейти второму шару, с некоторой потерей, естественно): m1*v1+m2*v2 = m1"*v1"+m2"*v2". А так как массы шаров равны, то v1+v2 = v1"+v2"(в векторной форме).
Вообще, я специально и предоставил исходники для доработки тому, кто хочет сделать совершенную модель.
 Bask


03-11-2002 10:19
to Пользователь

Кручение передаётся, это факт, поскольку иначе бы не выполнялся закон сохранения энергии. А насчёт физики согласен. Разработанный вариант сильно идеален. Пожелание автору смоделировать модель сукна. Это выполняется на основе моделирования взаимодействия и сил упругости на одной ворсинке.


02-11-2002 10:33
Надо бы немного переделать физику программы - шары в конце двигаются очень медленно и долго, надо как-то ускорить процесс остановки хоть немного.


02-11-2002 03:37
А как же быть с "закрученными" шарами?

И всегда интересовал вопрос: Если мы закручиваем биток, то передается ли кручение следующему шару по которому он попадает?


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Вода мокрая или сухая?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования