модель идеального газа
Модератор: Модераторы
-
nordlink19
- новенький
- Сообщения: 13
- Зарегистрирован: 23.12.2009 18:03:05
модель идеального газа
Написал программу в которой при нажатии на форму из центра запускается шарик и ударяется о края формы. Как добавить много шариков и что бы они сталкивались между собой и о кроя формы. Грубо говоря модель идеального газа 
Положи в отдельные процессы. Уж не знаю сколько по максимуму, но с десяток другой - точно сможешь создать...
-
nordlink19
- новенький
- Сообщения: 13
- Зарегистрирован: 23.12.2009 18:03:05
поясни
Добавлено спустя 2 минуты 33 секунды:
wsv
помоги с этой программой
Добавлено спустя 2 минуты 33 секунды:
wsv
помоги с этой программой
Или TThread или CreateProcess.
Друг о друга ударяться не будут.
Друг о друга ударяться не будут.
-
nordlink19
- новенький
- Сообщения: 13
- Зарегистрирован: 23.12.2009 18:03:05
почему не будут
Накой там отдельные процессы? Вы че. может простым for по списку шариков обойтись?
У него итак поди в основном процессе все рисуется и форму не подвинуть... 
Вот и процессы...
Вот и процессы...
можноже Timer на форму положить и в нем обсчеты вести както.
procedure TForm1.Button1Click(Sender: TObject);
var H:Cardinal;
begin
H:=BeginThread(@...); //вместо многоточия подставить название функции, которая отрисовывает шарик.
//Она должна соответствовать типу TThreadFunc.
end;
Сколько раз жмакнем кнопку, столько шаров должно рисоваться. Как-то так...
var H:Cardinal;
begin
H:=BeginThread(@...); //вместо многоточия подставить название функции, которая отрисовывает шарик.
//Она должна соответствовать типу TThreadFunc.
end;
Сколько раз жмакнем кнопку, столько шаров должно рисоваться. Как-то так...
wsv
Это типа такого:
Вопрос:"Как надо ходить на рыбалку?"
Ответ:"Надо брать много водки."
nordlink19
Идея с потоками просто плохой совет. В теме http://freepascal.ru/forum/viewtopic.php?t=4068&view=unread#unread давались примеры функций, ну и надо погуглить чтонить про геометрию чтоль... А так alexrayne правильно сказал - как рисуеш один круг, так и остальные отрисовывай в цикле for например, загони их в массив какой чтоль...
Это типа такого:
Вопрос:"Как надо ходить на рыбалку?"
Ответ:"Надо брать много водки."
nordlink19
Идея с потоками просто плохой совет. В теме http://freepascal.ru/forum/viewtopic.php?t=4068&view=unread#unread давались примеры функций, ну и надо погуглить чтонить про геометрию чтоль... А так alexrayne правильно сказал - как рисуеш один круг, так и остальные отрисовывай в цикле for например, загони их в массив какой чтоль...
А чего плохого-то?
Приложение не залипает. Форма двигается. Поток открыли-отработали-закрыли. А про кнопку - просто так написал.
Что мешает сделать тот же цикл, только открыть в нем десяток нитей? Ничего.
Приложение не залипает. Форма двигается. Поток открыли-отработали-закрыли. А про кнопку - просто так написал.
Что мешает сделать тот же цикл, только открыть в нем десяток нитей? Ничего.
Просто не имеет смысла делать нити - самое медленное здесь, это отрисовка, а её прийдёться синхронизировать с основным потоком плюс заморачиваться с одновременным доступом к данным (надо же в каждой нити будет знать координаты остальных окружностей).. А чтобы окно не замораживалось просто делать это всё по таймеру или в OnIdle приложения. Так что потоки это, согласись, чуток неуместно в данном случае
Максимум имело бы смысл ещё создать один отдельный поток для отрисовки, но для такой задачи это как стрелять из пушки по воробьям..
- AbakAngelSoft
- постоялец
- Сообщения: 273
- Зарегистрирован: 06.08.2008 19:28:26
- Откуда: Краснодар
- Контактная информация:
Обсчитывать физику все-же лучше в отдельном потоке.
Хотя для идеальных столкновений физики с гулькин нос, но надо сразу делать правильно! Потом захочется прибавить силу притяжения, спин и т.д.
Хотя для идеальных столкновений физики с гулькин нос, но надо сразу делать правильно! Потом захочется прибавить силу притяжения, спин и т.д.
Обсчитывать в основном потоке в цикле, в конце цикла - вызов ProcessMessages. И форма залипать не будет, и шарики будут летать.Обсчитывать физику все-же лучше в отдельном потоке.
P. S. Модель идеального газа предполагает, что частицы газа имеют нулевые размеры (и нулевой объем) и не взаимодействуют друг с другом. А если надо посложнее - берите Уравнение Ван-дер-Ваальса. Хотя к рисованию шариков на экране это все имеет очень далекое отношение
Хорошая тема. 
