Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Бильярд... [Delphi, Windows]


Ricks ©   (2006-06-18 12:32:00) 

... вернее столкновения. Народ, помогите мне разобраться со столкновениями шаров. Шары у меня взаимодействуют нормально, разлетаются куда надо, но проблема вот в чем - ИНОГДА большинство шаров начинают носиться как угорелые по всему столу, это происходит из за неконтролируемого прироста скорости, но откуда он берется неясно.
Вот мой кусочек кода:

для i-ого и j-ого шаров:
sx[.], sy[.] - положение шара
vx[.], vy[.] - скорость шара

  dx:=sx[j] - sx[i];
  dy:=sy[j] - sy[i];
  d:=rad[i] + rad[j];
  u:=sqrt(sqr(dx) + sqr(dy)) - d;
  if u < 0 then begin
   a:=ArcTan2( dy, dx );
   u:=abs(u);
   
   sx[i]:=sx[i] - cos(a) * u;
   sy[i]:=sy[i] - sin(a) * u;
   sx[j]:=sx[j] + cos(a) * u;
   sy[j]:=sy[j] + sin(a) * u;

   v1:=sqrt( sqr( vx[i] ) + sqr( vy[i] ) );
   v2:=sqrt( sqr( vx[j] ) + sqr( vy[j] ) );
   vx[i]:=vx[i] - (v1+v2) * cos(a);
   vy[i]:=vy[i] - (v1+v2) * sin(a);
   vx[j]:=vx[j] + (v1+v2) * cos(a);
   vy[j]:=vy[j] + (v1+v2) * sin(a);

PS: в теории я знаю - закон сохранения количества движения и закон сохранения энергии, но я думаю я их не так реализовал...


Ricks   (2006-06-20 14:44:00) [1]


> Rial ©

Уже сделал, еще что-нибудь придумаю, выложу новую версию

> Algol

Это в планах...


Algol   (2006-06-20 13:00:00) [2]

А вращательное движение шара учитывается ?
А удар "с подскоком" ?


Rial   (2006-06-19 01:22:00) [3]

Прикольно.
Только шарики слишком долго едут с очень маленькой скоростью.
Сделай нижний предел больше.
А силу кия наращивай быстрее.


Ricks   (2006-06-19 00:57:00) [4]

Все, разобрался - где-то нашел то что нужно,
вот результат моих полудневных стараний:
http://www.ricks.pisem.net/b2.zip


Ricks   (2006-06-18 12:47:00) [5]

Что из этого выходит можете посмотреть здесь:
http://www.ricks.pisem.net/b.zip


Наверх

Титульная страница Поиск, карта сайта Написать письмо