модель идеального газа

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

модель идеального газа

Сообщение nordlink19 » 23.12.2009 19:09:20

Написал программу в которой при нажатии на форму из центра запускается шарик и ударяется о края формы. Как добавить много шариков и что бы они сталкивались между собой и о кроя формы. Грубо говоря модель идеального газа :D
nordlink19
новенький
 
Сообщения: 13
Зарегистрирован: 23.12.2009 19:03:05

Re: модель идеального газа

Сообщение wsv » 23.12.2009 19:11:23

Положи в отдельные процессы. Уж не знаю сколько по максимуму, но с десяток другой - точно сможешь создать...
wsv
незнакомец
 
Сообщения: 8
Зарегистрирован: 06.12.2009 09:24:56

Re: модель идеального газа

Сообщение nordlink19 » 23.12.2009 19:12:34

поясни

Добавлено спустя 2 минуты 33 секунды:
wsv
помоги с этой программой
nordlink19
новенький
 
Сообщения: 13
Зарегистрирован: 23.12.2009 19:03:05

Re: модель идеального газа

Сообщение wsv » 23.12.2009 19:20:31

Или TThread или CreateProcess.

Друг о друга ударяться не будут.
wsv
незнакомец
 
Сообщения: 8
Зарегистрирован: 06.12.2009 09:24:56

Re: модель идеального газа

Сообщение nordlink19 » 23.12.2009 19:53:44

почему не будут
nordlink19
новенький
 
Сообщения: 13
Зарегистрирован: 23.12.2009 19:03:05

Re: модель идеального газа

Сообщение alexrayne » 23.12.2009 20:14:06

Накой там отдельные процессы? Вы че. может простым for по списку шариков обойтись?
alexrayne
постоялец
 
Сообщения: 125
Зарегистрирован: 03.12.2008 16:56:26

Re: модель идеального газа

Сообщение wsv » 23.12.2009 20:28:35

У него итак поди в основном процессе все рисуется и форму не подвинуть... :-)
Вот и процессы...
wsv
незнакомец
 
Сообщения: 8
Зарегистрирован: 06.12.2009 09:24:56

Re: модель идеального газа

Сообщение alexrayne » 23.12.2009 20:40:14

можноже Timer на форму положить и в нем обсчеты вести както.
alexrayne
постоялец
 
Сообщения: 125
Зарегистрирован: 03.12.2008 16:56:26

Re: модель идеального газа

Сообщение wsv » 23.12.2009 20:49:58

procedure TForm1.Button1Click(Sender: TObject);
var H:Cardinal;
begin
H:=BeginThread(@...); //вместо многоточия подставить название функции, которая отрисовывает шарик.
//Она должна соответствовать типу TThreadFunc.
end;

Сколько раз жмакнем кнопку, столько шаров должно рисоваться. Как-то так...
wsv
незнакомец
 
Сообщения: 8
Зарегистрирован: 06.12.2009 09:24:56

Re: модель идеального газа

Сообщение FedeX » 23.12.2009 21:15:48

wsv
Это типа такого:
Вопрос:"Как надо ходить на рыбалку?"
Ответ:"Надо брать много водки."

nordlink19
Идея с потоками просто плохой совет. В теме http://freepascal.ru/forum/viewtopic.php?t=4068&view=unread#unread давались примеры функций, ну и надо погуглить чтонить про геометрию чтоль... А так alexrayne правильно сказал - как рисуеш один круг, так и остальные отрисовывай в цикле for например, загони их в массив какой чтоль...
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: модель идеального газа

Сообщение wsv » 23.12.2009 21:25:44

А чего плохого-то?
Приложение не залипает. Форма двигается. Поток открыли-отработали-закрыли. А про кнопку - просто так написал.

Что мешает сделать тот же цикл, только открыть в нем десяток нитей? Ничего.
wsv
незнакомец
 
Сообщения: 8
Зарегистрирован: 06.12.2009 09:24:56

Re: модель идеального газа

Сообщение FedeX » 23.12.2009 23:56:31

Просто не имеет смысла делать нити - самое медленное здесь, это отрисовка, а её прийдёться синхронизировать с основным потоком плюс заморачиваться с одновременным доступом к данным (надо же в каждой нити будет знать координаты остальных окружностей).. А чтобы окно не замораживалось просто делать это всё по таймеру или в OnIdle приложения. Так что потоки это, согласись, чуток неуместно в данном случае :wink: Максимум имело бы смысл ещё создать один отдельный поток для отрисовки, но для такой задачи это как стрелять из пушки по воробьям..
Аватара пользователя
FedeX
постоялец
 
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Re: модель идеального газа

Сообщение AbakAngelSoft » 24.12.2009 10:09:16

Обсчитывать физику все-же лучше в отдельном потоке.
Хотя для идеальных столкновений физики с гулькин нос, но надо сразу делать правильно! Потом захочется прибавить силу притяжения, спин и т.д.
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Re: модель идеального газа

Сообщение Climber » 24.12.2009 11:30:02

Обсчитывать физику все-же лучше в отдельном потоке.
Обсчитывать в основном потоке в цикле, в конце цикла - вызов ProcessMessages. И форма залипать не будет, и шарики будут летать.

P. S. Модель идеального газа предполагает, что частицы газа имеют нулевые размеры (и нулевой объем) и не взаимодействуют друг с другом. А если надо посложнее - берите Уравнение Ван-дер-Ваальса. Хотя к рисованию шариков на экране это все имеет очень далекое отношение :wink:
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: модель идеального газа

Сообщение wsv » 24.12.2009 11:32:56

Хорошая тема. 8)
wsv
незнакомец
 
Сообщения: 8
Зарегистрирован: 06.12.2009 09:24:56

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 16

Рейтинг@Mail.ru