LINUX.ORG.RU

История изменений

Исправление Architector, (текущая версия) :

Сейчас я вам кое-что покажу, но вы не ругайтесь

https://pastebin.com/CAPsMs2q

Кхм, молекула движется только по осям x,y. При достижении горизонтальной стенки (максимума или минимума по у), мы просто отражаем молекулу - для молекулы это выглядит, будто она движется дальше.

При достижении вертикальной стенки мы пытаемся задать ей соответствующую скорость.

Я написал такую кривую функцию getrs(bool fl), потому что хз, как распределять скорость по осям. При fl==true - молекула соприкасается горячей стенки, иначе - холодной.

Т.е. по сути вот я могу сделать так:

float x = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
float y = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
float z = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
speed = sqrt(x*x+y*y+z*z)*V;

Где V - это средняя скорость, которая должна быть.

Но тут появляется составляющая z, которую хотелось бы выкинуть. И потом, мы получаем в принципе скорость, а как её потом разбивать на составляющие? Не поровну же.

Ну и в соответствии с кривой программой при каждом столкновении разность энергий равна нулю…Хотя это вроде не должно быть из-за той функции

Исходная версия Architector, :

Сейчас я вам кое-что покажу, но вы не ругайтесь

https://pastebin.com/CAPsMs2q

Кхм, молекула движется только по осям x,y. При достижении горизонтальной стенки (максимума или минимума по у), мы просто отражаем молекулу - для молекулы это выглядит, будто она движется дальше.

При достижении вертикальной стенки мы пытаемся задать ей соответствующую скорость.

Я написал такую кривую функцию getrs(bool fl), потому что хз, как распределять скорость по осям. При fl==true - молекула соприкасается горячей стенки, иначе - холодной.

Т.е. по сути вот я могу сделать так:

float x = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
float y = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
float z = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
speed = sqrt(x*x+y*y+z*z)*V;

Где V - это средняя скорость, которая должна быть.

Но тут появляется составляющая z, которую хотелось бы выкинуть. И потом, мы получаем в принципе скорость, а как её потом разбивать на составляющие? Не поровну же.