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

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

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

nordlink19
новенький
Сообщения: 13
Зарегистрирован: 23.12.2009 18:03:05

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

Сообщение nordlink19 »

Написал программу в которой при нажатии на форму из центра запускается шарик и ударяется о края формы. Как добавить много шариков и что бы они сталкивались между собой и о кроя формы. Грубо говоря модель идеального газа :D
wsv
незнакомец
Сообщения: 8
Зарегистрирован: 06.12.2009 08:24:56

Сообщение wsv »

Положи в отдельные процессы. Уж не знаю сколько по максимуму, но с десяток другой - точно сможешь создать...
nordlink19
новенький
Сообщения: 13
Зарегистрирован: 23.12.2009 18:03:05

Сообщение nordlink19 »

поясни

Добавлено спустя 2 минуты 33 секунды:
wsv
помоги с этой программой
wsv
незнакомец
Сообщения: 8
Зарегистрирован: 06.12.2009 08:24:56

Сообщение wsv »

Или TThread или CreateProcess.

Друг о друга ударяться не будут.
nordlink19
новенький
Сообщения: 13
Зарегистрирован: 23.12.2009 18:03:05

Сообщение nordlink19 »

почему не будут
alexrayne
постоялец
Сообщения: 125
Зарегистрирован: 03.12.2008 15:56:26

Сообщение alexrayne »

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

Сообщение wsv »

У него итак поди в основном процессе все рисуется и форму не подвинуть... :-)
Вот и процессы...
alexrayne
постоялец
Сообщения: 125
Зарегистрирован: 03.12.2008 15:56:26

Сообщение alexrayne »

можноже Timer на форму положить и в нем обсчеты вести както.
wsv
незнакомец
Сообщения: 8
Зарегистрирован: 06.12.2009 08:24:56

Сообщение wsv »

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

Сколько раз жмакнем кнопку, столько шаров должно рисоваться. Как-то так...
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

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

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

Сообщение wsv »

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

Что мешает сделать тот же цикл, только открыть в нем десяток нитей? Ничего.
Аватара пользователя
FedeX
постоялец
Сообщения: 422
Зарегистрирован: 27.03.2006 09:25:34
Откуда: украина, житомир

Сообщение FedeX »

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

Сообщение AbakAngelSoft »

Обсчитывать физику все-же лучше в отдельном потоке.
Хотя для идеальных столкновений физики с гулькин нос, но надо сразу делать правильно! Потом захочется прибавить силу притяжения, спин и т.д.
Climber
постоялец
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Сообщение Climber »

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

P. S. Модель идеального газа предполагает, что частицы газа имеют нулевые размеры (и нулевой объем) и не взаимодействуют друг с другом. А если надо посложнее - берите Уравнение Ван-дер-Ваальса. Хотя к рисованию шариков на экране это все имеет очень далекое отношение :wink:
wsv
незнакомец
Сообщения: 8
Зарегистрирован: 06.12.2009 08:24:56

Сообщение wsv »

Хорошая тема. 8)
Ответить