|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.12.2021, 19:25 | #31 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Нормальное распределение моделируется легко:
http://stratum.ac.ru/education/textb...lection25.html |
10.12.2021, 21:45 | #32 |
Пользователь
Регистрация: 24.11.2021
Сообщений: 24
|
ViktorR, Если я увеличиваю DT, то маленькие молекулы не пролетают через большую, а если увеличиваю скорость вот так:
Код:
|
11.12.2021, 06:10 | #33 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
У меня тоже RAND_MAX=32767. Изменил в коде из первого сообщения строку инициализации молекул на такую:
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
11.12.2021, 12:34 | #34 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Алгоритмизация модели столкновения может показаться простой, но это далеко не так.
Почитал несколько статей и понял, что для небольшого числа тел её, от части, можно решить путём перебора. Для большого числа тел используют ухищрения. Например, как понял я, разбивая область на параллелограммы (или прямоугольники, или параллелепипеды - 3D: определяется используемой геометрией пространства). Это позволяет составить 2-D или 3-D массив, в котором элементы массива - ID тел (или ссылка на список ID, если таких тел собралось в одной области несколько). Тогда, для расчёта столкновений, достаточно просмотреть только соседние элементы массива. Сам массив генерируется сортировкой перед просмотром столкновений. Ещё сложнее задача будет решаться, если надо учитывать не только первый уровень (тело сталкивается с телом), но и второй - в столкновении участвует больше 2-х тел. Так подумалось, что, для упрощения отображения, можно пересчитывать координаты тел и не отображать сами моменты столкновения, а показывать состояние системы через заданные интервалы. Т.е., если обнаружено столкновение (тело влетело в другое), то пересчитываем их положение и затем показываем. Правда как это будет видно визуально? Тело летело влево, а теперь летит вправо вверх, например, (излом какой-то). PS: Ссылок достаточно много и нет смысла их тут приводить. Для ТС: Вам надо самому принять, что должна показывать ваша модель. Тут важнее то, что при столкновении импульс передаётся большой молекуле и эта молекула совершает случайные движения.
Как-то так, ...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Pascal. Броуновское движение молекул (диффузия) | vzik | Помощь студентам | 2 | 19.05.2012 11:19 |
Задача на Pascal ABC. Определить среднюю кинетическую энергию вращательного движения молекул водорода | faqbi4vosk | Помощь студентам | 1 | 22.04.2012 17:39 |
движение молекул | Игорь228 | C++ Builder | 0 | 11.12.2011 00:48 |
QBasic графика в движении | Dronlion | Помощь студентам | 0 | 05.04.2011 10:29 |
Количество молекул воздуха в помещении | Cular | Microsoft Office Excel | 7 | 23.05.2010 20:30 |