使用Mathematica描述小球在封闭空间内碰壁问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 13:44:06
一小球以初速度Vo{0.9,0.7,1.5}m/s从原点{0,0,0}出发,在1×1×1的立方体内来回碰撞。
要求把运动过程在10秒内以动画的形式表达出来。(包含球以及运动轨迹)
求求大家帮帮我。
或者给我个思路

在我的空间里
链接:http://hi.baidu.com/philoart/blog/item/f51ea9f955630205d9f9fdf1.html

不过老兄留学国外更是要强调独立思考啊~~

呵呵.
这个涉及到几个技术细节.
为了速度快些, 建议你不要即时计算轨道, 而是先把计算出来的轨道存到list里.然后用Manipulate或Animated播放数据即可.
球的运动可以用方程写出出来,专门写一个函数最好. 反射可以用边界条件来做.
运动轨迹的话, 知道打印/显示之前的list从1到当前t时刻的数据即可显示运动轨迹.
当前数据点特别的画出来, 以显示是小球.
t可以取0.1为时间间隔.
OK.
这样的好处是演示时速度快.

另一种方案是Dynamic[静止的图]
在外部或内部按运动方程循环改变坐标值. 轨迹可以用accumulate之类的函数写.或者写一个数据不停的加入当前坐标, 并打印作为轨迹. 这样是即时运算的方法, 有可能会慢, 尤其是运动方程比较复杂时.
------------------------------
一段类似的代码:(2D, N个小球 N可是自己改变的, 不考虑小球之间的碰撞)
Manipulate[
If[PlayOn,
Framed@DynamicModule[{contents = {}},
EventHandler[
Graphics[{Hue[pointcolor], PointSize[points],
Point[Dynamic[
contents =
Map[If[#[[1, 2]] >= 0 && #[[1, 2]] <