- 4
- 0
- 约1.77万字
- 约 25页
- 2017-05-13 发布于河南
- 举报
模拟分子运动
弹性碰撞的模拟实验
Author:hank
考虑以下系统,在由多边形围成的平面区域内,有小球作无摩擦水平运动。在此过程中,小球将和多边形边界发生碰撞或者与其他球碰撞,而使自身的运动速度产生变化。本实验假定,所有的碰撞均是弹性的,并且具有相同的恢复系数e.
本此试验以OpenGL为平台经行编程,由于时间仓促,水平较低,尚有许多不足,敬请见谅
理论背景:
对心弹性碰撞:
假设现在有两个物体发生了平面内的对心碰撞,质量分别为m1,m2;碰撞前速度以v1,v2表示,碰后变为u1,u2.以经过A,B质心的直线作为x轴,垂直纸面向外为z轴正方向,建立右手直角坐标系。把v1,v2,u1,u2分解到坐标轴上,根据碰撞前后的动量守恒,可得方程:
m1*v1x+m2*v2x=m1*u1x+m2*u2x 1式
m1*v1y+m2*v2y=m1*u1y+m2*u2y 2式
又在y轴上,物体未受到冲击力的作用,而且不计摩擦,以此速度在y轴上的分量,碰撞前后未发生变化。
即:
u1y=v1y 3式
u2y=y2y 4式
在x轴方向上,可根据实验补充方程,
e=(u2x-u1x)/(v1x-v2x) 5式
与1式联立,可得到:
u1x=(m1-e*m2)/(m1+m2)*v1x+(e+1)*m2/(m1+m2)*v2x 6式
u2x=(e+1)*m1/(m1+m2)*v1x+(m2-e*m1)/(m1+m2)*v2x 7式
程序中的碰撞分一下三种:
1.对于小球与一条边(可视为一堵墙壁)碰撞:
点p1和点p2分别是这条边的起点与终点,设向量a表示p1p2方向的单位向量,向量b在xy平面内与之正交,满足:b=k×a(k 是 z 轴的单位向量)
于是:
u=(v*a)*-e*(v*b)*b
碰撞条件的判断:
a.
小球中心到直线p1p2的距离d=r;
其中,D = (op1p1p2) / |p1p2|
b.
球和墙壁有相对挤压的趋势,即:
(v*b)*b指向斜边的一侧
可知 (v*b)*b*b0;
进而 v*b0;
2.小球与两条边同时碰撞
这里只考虑两边正交的情况,如图所示:
这种情况下,小球与两墙壁的作用可以认为互不影响,把入射速度分解到与两边正交的方向上,反射后速度的收缩系数(即与原来速度的比率)相同,因此小球将反方向返回,速度变为原来的e倍,
u = ﹣e*v;
碰撞条件:
同时满足与两块墙壁的碰撞条件,即可。
3.球与球的碰撞
此时点p1和点p2是两球的质心,同样以p1p2为轴建立坐标系,向量c是其方向上的单位向量(即c=(p1-p2)/|p1-p2|),单位向量d在图示平面内与之正交。
由对心碰撞的理论可知:
碰后两球速度:
u1=(v1*d)*d+[(m1-e*m2)/(m1+m2)*(v1*c)+(e+1)*m2/(m1+m2)*(v2*c)]*c
u2=(v2*d)*d+[(e+1)*m1/(m1+m2)*(v1*c) +(m2-e*m1)/(m1+m2)*(v2*c)]*c
碰撞条件:
两球中心间距p1p2应小于它们的半径之和
|p1p2| = r1+r2;
球p2对球p1的相对速度vr要指向p1侧,以使它们有相对挤压的趋势:
Vr*p1p20;
其中 vr = v2 – v1;
效果图:
使用说明:
要使用的源文件:
hant_main.cpp
ball.h
vector3f.h
wall.h
·文件的处理:
把以下文件移到相应位置:
glut.h文件 移动到 include/gl
glut32.lib文件 移动到 lib
glut32.dll文件 移动到 windows/system32/
·运行说明:
由于是新手上路,还没能把一些交互手段用上,这是最大遗憾。
你可以通过主文件设置有关参数进行实验。
通过设置头文件vector3f.h中的e值,即弹性碰撞的回复系数,可以观察不同情况下的碰撞行为。
如果把e值调至大于1.0,回发现小球的速度会在很短时间内增殖很大,随之小球将脱离墙壁。这一部分因为程序本身设计不够完善,但是在一定程度上依赖于计算机的响应时间。可想如果一个物体速度极快,以至时间本身对于它也不能很好描述,那么这个物体就会脱离我们现在的世界,也许将进行时空穿梭。谁知道?
附录文件:
hant_main.cpp
#includevector3f.h //定义矢量运算
#includewall.h //关于墙壁的类
#includeball.h //可通过在这个文件中设置e值,改变恢复系数,
//如果设置e值大于1.0,会出现什么情况?
//#pragma comment(linker, /subsystem:\windows\ /ent
您可能关注的文档
- 四川省眉山市仁寿县中岗中学2015-2016学年七年级(上)期中思想品德试卷(解析版).doc
- 甘肃省嘉峪关四中2015-2016学年上学期七年级(上)期中政治试卷(解析版).doc
- 安徽省蚌埠市新城教育集团2015-2016学年七年级(上)期中思想品德试卷(解析版).doc
- 贵州省黔西南州安龙县海子中学2016届九年级上学期期中思想品德试卷(解析版).doc
- 安徽省宿州外国语学校2015-2016学年度上学期九年级(实验班)期中考试思想品德试卷(解析版).doc
- 海南省文昌市华侨中学2016届九年级上学期期中政治试卷(解析版).doc
- 江苏省兴化市常青藤实验中学2016届九年级上学期期中思想品德试卷(解析版).doc
- 江苏省苏州市立达中学2015-2016学年七年级下学期期末政治试卷(无答案).doc
- 河南省南阳市桐柏县2015-2016学年八年级下学期第二次月考政治试题.doc
- 江苏省南通市启东市长江中学2015-2016学年下学期八年级期中政治试卷(解析版).doc
原创力文档

文档评论(0)