[英]3d collision on matlab
I'm developing a system like this: I have a sphere with many molecules inside it. 我正在开发一个像这样的系统:我有一个内部有许多分子的球体。 If the molecules collide, their new directions need to be recalculated, as well as if they collide with the walls of the sphere. 如果分子发生碰撞,则需要重新计算其新方向,以及它们是否与球体壁碰撞。
I have already two matrices: one with the coordinates of all the particles and another with the coordinates of the walls of the sphere. 我已经有了两个矩阵:一个具有所有粒子的坐标,另一个具有球体壁的坐标。 Here is a part of my algorithm. 这是我算法的一部分。
% 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
I'd be very thankful if someone helps me. 如果有人帮助我,我将非常感激。 I've been trying to solve for weeks, without success. 我已经尝试解决了数周,但没有成功。
I can just provide you with some "suggestions": 我可以为您提供一些“建议”:
elastic collision
考虑elastic collision
t=t+dt
) 您应该添加一个相对于仿真时间进行迭代的外部循环(每次迭代t=t+dt
) Once you have a stable solution for 2D you can add the third dimension. 一旦有了稳定的2D解决方案,就可以添加第三维。
Hope this helps. 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.