logo资料库

小球碰撞碰撞代码.doc

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
两个小球碰撞 一: 姓名: 刘晓亮 班级: 河工大 物理 C082 学号: 085060 二:摘要 首先,设小球质量相同,碰撞时内力远大于外力,动量守恒,再根据能量守恒定率,不考虑能量损失碰撞 前的动能等于碰撞后的动能,由公式计算出碰撞后的速度,再将速度分解到竖直方向和水平方向 三:关键词 动量守恒、动能守恒、碰撞 引言: 重力 势能 、弹 性势能 和动 能统称 为机 械能 ,只有 在( 或弹簧 弹力 )的 情形下 ,物 体的和 动能 发生 相互转化,但总机械能保持不变动量守恒,是最早发现的一条守恒定律,它渊源于十六、七世纪西欧的 哲学思想,法国哲学家兼数学、物理学家笛卡儿,对这一定律的发现做出了重要贡献。如果一个系统不受 外力或所受外力的矢量和为零,那么这个系统的总动量保持不变,这个结论叫做动量守恒定律。动量守恒 定律是自然界中最重要最普遍的守恒定律之一,它既适用于宏观物体,也适用于微观粒子;既适用于低速 运动物体,也适用于高速运动物体,它是一个实验规律,也可用牛顿第三定律和动量定理推导出来。 正文: 一个 系统 不受 外力或 所受 外力之 和为 零, 这个系 统的 总动量 保持 不变 , 当发 生动 能与 重力势 能 的转 化时 ,只 有重力 做功 ,当发 生动 能与 弹性势 能的 转化时 ,只 有弹 力做功 ,其 他力均 不做 功, 则系统的机械能守恒 系统的初、末状态机械能守恒 系统的动能增加量等于势能减少量 E1=E2 △E K=-△E p E k1+E p1=E k2+E p2 即△ E k+△E p=0 E k2-E k1= E p1- E p2 完全弹性碰撞在理想情况下,完全弹性碰撞的物理过程满足动量守恒和能量守恒。如果两个碰撞小球的质 量相等,联立动量守恒和能量守恒方程时可解得:两个小球碰撞后交换速度。如果被碰撞的小球原来静止, 则碰撞后该小球具有了与碰撞小球一样大小的速度,而碰撞小球则停止,碰撞时间极短碰撞力很大,外 力可以忽略不计,系统动量守恒速度要发生有限的改变,位移在碰撞前后可以忽略不计。 碰撞 过程 可分为 两 个过 程。开 始碰 撞时, 两球相 互挤 压,发 生形 变,由 形变 产生的 弹性恢 复力 使 两球的速度发生变化,直到两球的速度变得相等为止。这时形变得到最大。这是碰撞的第一阶段, 称为 压 缩阶 段。此 后, 由于形 变仍然 存在 ,弹性 恢复 力继续 作用 ,使两 球速度 改变 而有相 互脱 离 接触 的趋 势,两 球压 缩逐渐 减小 ,直到 两球 脱离接 触时 为止。 这是 碰撞的 第二 阶段, 称为恢 复阶 段。整个碰撞过程到此结束 附录:
Option Explicit Private Type Speed SpedX As Long SpeedY As Long End Type Dim SpeedA s Speed Dim SpeedB As Speed Private Sub cmd1_click() SpeedA.SpeedX = 60 SpeedA.SpeedY = -80 SpeedB.SpeedX = 20 SpeedB.SpeedY = 50 Timer1.Interval = 50 End Sub Private Sub Form_Load() Shape1.BackColor = RGB(0, 0, 255): Shape2.BackColor = RGB(255, 0, 0) Shape1.BackStyle = 1: Shape2.BackStyle = 1 Shape1.Shape = 3: Shape2.Shape = 3 Shape1.Width = 500: Shape2.Width = 500 End Sub Private Sub Timer1_Timer() If Shape1.Top <= 0 Or Shape1.Top >= Me.Height - 1250 Then SpeedA.SpeedY = -SpeedA.SpeedY If Shape2.Top <= 0 Or Shape2.Top >= Me.Height - 1250 Then SpeedB.SpeedY = -SpeedB.SpeedY If Shape1.Left <= 0 Or Shape1.Left >= Me.Width - 800 Then SpeedA.SpeedX = -SpeedA.SpeedX If Shape2.Left <= 0 Or Shape2.Left >= Me.Width - 800 Then SpeedB.SpeedX = -SpeedB.SpeedX If Sqr((CLng(Shape1.Left - Shape2.Left) ^ 2) + CLng((Shape1.Top - Shape1.Top) ^ 2)) < 500 Then Call SpeadChange(SpeedA, SpeedB) End If Shape1.Left = Shape1.Left + SpeedA.SpeedX * 1 Shape1.Top = Shape1.Top + SpeedA.SpeedY * 1 Shape2.Left = Shape2.Left + SpeedB.SpeedX * 1
Shape2.Top = Shape2.Top + SpeedB.SpeedY * 1 End Sub Private Sub SpeadChange(ByRef SpeedA As Speed, ByRef SpeedB As Speed) Dim Temp, Temp2 As Long Dim NewA As Speed Dim NewB As Speed Temp = (SpeedA.SpeedX) ^ 2 + (SpeedB.SpeedX) ^ 2 Temp2 = SpeedA.SpeedX + SpeedB.SpeedX NewB.SpeedX = Int((Sqr(Temp - 1 / 2 * ((Temp2) ^ 2)) + 1 / 2 * Sqr(2) * Temp2) / Sqr(2)) NewA.SpeedX = Temp2 - NewB.SpeedX Temp = (SpeedA.SpeedY) ^ 2 + (SpeedB.SpeedY) ^ 2 Temp2 = SpeedA.SpeedY + SpeedB.SpeedY NewB.SpeedY = Int((Sqr(Temp - 1 / 2 * ((Temp2) ^ 2)) + 1 / 2 * Sqr(2) * Temp2) / Sqr(2)) NewA.SpeedY = Temp2 - NewB.SpeedY SpeedA.SpeedX = NewA.SpeedX SpeedA.SpeedY = NewA.SpeedY SpeedB.SpeedX = NewB.SpeedX SpeedB.SpeedY = NewB.SpeedY End Sub
分享到:
收藏