3d коллизия на матлабе

Я разрабатываю такую ​​систему: у меня есть сфера со множеством молекул внутри. При столкновении молекул необходимо пересчитать их новые направления, как и при столкновении со стенками сферы.
У меня уже есть две матрицы: одна с координатами всех частиц, другая с координатами стенки шара. Вот часть моего алгоритма.

% Coordinates of the wall of the sphere
theta=linspace(0, 2*pi, 25);
phi=linspace(0, pi, 25);
x_sph=r_sph.*cos(theta).*sin(phi);
y_sph=r_sph.*sin(theta).*sin(phi);
z_sph=r_sph.*cos(phi);
[x_sph' y_sph' z_sph'];


itmax=100
for it=(1:itmax);
    for i3=1:500
        for j3=1:500
            if i3~=j3
               dist1(i3,j3,it)=sqrt((balls_in_sphere(i3,1)-balls_in_sphere(j3,1))^2+(balls_in_sphere(i3,2)-balls_in_sphere(j3,2))^2+(balls_in_sphere(i3,3)-balls_in_sphere(j3,3))^2);
               if dist1(i3,j3,it)<=d

                %recalculate the new directions   ???

               end
            end
        end
        for j3=1:25
            dist2(i3,j3,it)=sqrt((balls_in_sphere(i3,1)-cs(j3,1)^2)+(balls_in_sphere(i3,2)-cs(j3,2)^2)+(balls_in_sphere(i3,3)-cs(j3,3)^2)); 
%comparative between the coordinates of the balls inside the sphere and the points of the sphere

            if dist2(i3,j3,it)<=d
              %if there is a collision, recalculate the directions   ???

            end
        end
    end
    balls_in_sphere1=balls_in_sphere2;
end

Буду очень благодарен, если мне кто-нибудь поможет. Я пытался решить в течение нескольких недель, без успеха.


person mauro.0312    schedule 15.05.2015    source источник


Ответы (1)


Я могу просто дать вам несколько «предложений»:

  • проблема сложная, вы можете начать с 2D-сценария с несколькими частицами и квадратом или пятиугольником (вместо сферы)
  • рассмотреть elastic collision
  • вы должны дать частицам массу и скорость (для разложения на ее компоненты X и Y)
  • вы должны добавить внешний цикл, повторяющийся относительно времени моделирования (на каждой итерации t=t+dt)
  • на каждой итерации вычисляйте новое положение частиц
  • условие столкновения может быть определено относительно минимального расстояния между двумя частицами (как вы, кажется, уже сделали)
  • вместо определения сферы (или, в упрощенном случае, квадрата) точками, рассмотрим набор сеток (например, футбольных мячей) и оценим расстояние по отношению к ним.
  • чтобы определить новое направление частиц после столкновения, рассмотрите состав векторов скоростей: Вы можете легко найти формулы в Интернете (например, http://bolvan.ph.utexas.edu/~vadim/Classes/2014s/collisions.pdf

Когда у вас есть стабильное решение для 2D, вы можете добавить третье измерение.

Надеюсь это поможет.

person il_raffa    schedule 16.05.2015
comment
- вместо того, чтобы определять сферу (или, в упрощенном случае, квадрат) точками, рассмотрим набор сеток (например, футбольных мячей) и оценим расстояние по отношению к ним. Не могли бы вы помочь мне в этом? Я действительно понятия не имею об алгоритме для этого! - person mauro.0312; 18.05.2015