IPB
ЛогинПароль:

> Супер бильярд, подскажите...
сообщение
Сообщение #1


Новичок
*

Группа: Ожидающие
Сообщений: 15
Пол: Мужской

Репутация: -  0  +


Решил тут я бильярд на паскале написать. Ну кий там, шарик ведущий сделал, всё пока работает(кий толкает шарик, он катиться, замедляет ход), но необходимо и другие шары в игру(какой же это будет бильярд с одним шариком), а вот соударение шариков друг с другом, что-то не осилил. Подскажите, пожалуйста!!!! Заранее спасибо.


--------------------
http://magicrown.ru
<... image(s) deleted (Admin) ...>
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 136
Пол: Мужской
Реальное имя: Александр

Репутация: -  -2  +


Процедура TurnAfterHit неправильная!!!. Я писал на днях такую же прогу, тока ещё сила тяжести действует и потеря энергии. Так я тоже сначала просто менял составляющие скоростей шариков. Ну вот пример: первый шарик изначально покоится, а второй висит над ним, но не ровно над ним, а со смещением, скажем в пол-радиуса. После соударения они должны коряво в разные скорости разлететься, а с использованием той процедуры первый шарик просто прыгает вверх-вниз, а второй так вообще не двигаетса - беспредел! Уже второй день в голове крутится... Мне кажется, что надо посчитать угол между осью абсцисс и касательной к шарикам в точке соударения и как-то его использовать. Вот код. В чём ошибка?

Var
x1, y1, x2, y2: Real; {координаты центров}
r1, r2: Integer; {радиусы}
vx1, vy1, vx2, vy2: Real; {составляющие скоростей}

Procedure Bum;
var
l: Real; {Тот самый угол}
vx, vy: Real; {Дополнительные переменные}
begin
l:=Arctan((y2-y1)/(x2-x1)) - PI/2;
vx:=vx1;
vy:=vx2;
vx1:=(vx2+vy2)*cos(l);
vy1:=(vx2+vy2)*sin(l);
vx2:=(vx+vy)*cos(l+PI);
vy2:=(vx+vy)*sin(l+PI)
{то, что ось Y в Паскале вниз направлена, я не учитывал}
end;


--------------------
Старайтесь восполнять пробелы в области незнания! ;-D
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
VelarThind   Супер бильярд   11.04.2005 23:38
Altair   Вот этот пример думаю будет полезен. Код очень хор…   11.04.2005 23:58
mithquessir   Светлик, вот нашел pdfник описания какой-то лабора…   12.04.2005 0:26
AlienEmperor   А почему бы не представить игровое поле в виде мас…   12.04.2005 15:11
Бродяжник   С матричным полем возможны такие траблы: 1. Шары н…   12.04.2005 17:21
AlienEmperor   На самом деле я как раз недавно скидывал альфу игр…   12.04.2005 17:51
Atos   4. А если столкнутся больше двух шаров? :) Сейч…   12.04.2005 18:04
Бродяжник   AlienEmperor Поделитесь алгоритмом - как нужно обр…   12.04.2005 19:49
VelarThind   Тут ещё какой вопрос. Нужно то не просто их оттолк…   12.04.2005 21:18
AlienEmperor   На самом деле, в данном случае, придется немного…   13.04.2005 14:15
volvo   Ребята, вы вопрос внимательно читали? Мало ли ч…   13.04.2005 15:52
AlienEmperor   Volvo, ну так я же не спорю... И вариант решения п…   13.04.2005 15:56
VelarThind   Олег, спасибо за код, как раз то что нужно. Остало…   13.04.2005 16:15
Shura   Процедура TurnAfterHit неправильная!!…   23.04.2005 0:00
Altair   А в чем заключается неправильность? Втом, что не …   23.04.2005 0:11
Shura   Ну я ж привёл пример. Вот когда они в воздухе ста…   23.04.2005 0:22
Altair   Если не нравится, исправь!   23.04.2005 0:26
Shura   Хех, так если я б знал как, я бы не спрашивал - я…   23.04.2005 0:42
Altair   а понял :) насчет неправильности... l:=Arctan((y2-…   23.04.2005 0:49
Shura   Да не - нам то в радианах потом и нужно будет. Это…   23.04.2005 0:58
-Aleks-   Да не - нам то в радианах потом и нужно будет. Эт…   21.01.2010 13:04
Archon   Дак она и так под lazarus работает не плохо. Что п…   21.01.2010 14:34
TarasBer   Для шаров одной массы при идеально упругом столкно…   21.01.2010 23:12


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 4.05.2024 10:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name