[关闭]
@Canonvar 2016-05-03T20:34:14.000000Z 字数 795 阅读 1561

Billiard's Motion on square table (with center circle)

计算物理作业

学号: 2013301020085


摘要

本次作业完成第10次作业-chapter3_problem3.31,讨论了小球于正方形边框内部在中央存在不同半径圆框时的碰撞情况。用vPython对小球运动情况进行了简要演示,并对各情况下在的关系进行了讨论。

背景介绍

小球在规则的正方形边框内做无耗散的匀速运动时,将以不同的初速度和初始位置得到不同的固定轨迹。在有微小扰动的情况下,在固定纵坐标时的值将保持不变;而小球在规则的圆形边框内做无耗散匀速运动时,也具有稳定的相图,而当圆形渐渐趋于田径场形状时,其相图趋于混沌。

正文

实现原理

边框碰撞检测

设正方形中心位置为坐标原点,以右边框为例,当检测到小球x位置ball.pos.x大于右边框x坐标table_right.x时,小球的正确位置应该位于右边框镜像对称位置,位置修正为ball.pos.x = 2 * table_right.x - ball.pos.x,速度修正为ball.velocity.x = -ball.velocity.x

圆环碰撞检测

详见源码functionfixCollision(obj, pos)

程序实现

python源码地址:
billiard_test

结果分析

结论

在与中间小球的碰撞下,小球的运行轨迹被改变,从而造成了速度方向的改变,当圆变大时,碰撞的概率随之增大,故相图越混乱。

另外发现vPython一个有趣的bug _(:зゝ∠)_

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注