[交叉学科]用计算机看混沌现象
caoyuan9642 2010-11-20物理
学习Java之后玩了一个小游戏叫Gravitee Wars.
突发奇想:
Java强大的图形功能,
用来仿真一个重力场不是很好嘛


于是马上动手开始做。


程序很简单,就是一个Java applet 外加两个类用来处理万有引力。


万有引力的处理也很简单,每10ms更新一次加速度、速度、时间


具体的,
运动物体质量不计,
大质量物体不动。(类似行星绕恒星)
ax=ΣGM/r2*cos(大质量物体相对于运动物体的极角)


ay=ΣGM/r2*sin(大质量物体相对于运动物体的极角)
dvx=ax·dt
dvy=ay.dt


dx=vx*dt
dy=vy*dt
dt=10ms


每秒更新一百次物体运动状态。
这样仿真出来效果不错,G大概取1e-2左右比较好(坐标的单位是像素)


接下来的事情就很简单了:
放上两个恒星,一个物体团团转。
混沌就这么产生了——简化三体问题


但是,混沌终究会产生规律:
58298


58299


58300


58301




图中左侧恒星是右侧恒星10倍,并保持不变,
各个图的区别仅在于初始位置和速度不同


这就是混沌的奇妙所在!


还挺好玩的~


论坛MS不得直接播放Java Applet...
上传附件吧。。
不知道怎么在Eclipse里面生成.jar...
只有用个.html凑合了。
gravity.rar5.00k10次

+600  科创币    科创论坛   2010-11-20   赞扬。
来自 物理
 
2010-11-20 15:20:16
caoyuan9642(作者)
1楼
还有图片上方可以看到1/2*v^2
和Ep的数值
那个是动能和势能
下方的Hamiltonian(哈密顿量)是动势能之和,是守恒的
再下面的Go Away 和Stay 是根据动能和势能判断物体是否会逃逸
图中的线段是物体的初速度和起始位置
折叠评论
加载评论中,请稍候...
折叠评论
2楼
有意思。我以前一直想做一个玩意,楼主是否有兴趣?
就是成千上万个质点,由于彼此之间的万有引力的作用,在一个空间里活动。我想看看是否能最终生成球状星团或旋臂星系。
另外,也可以看看一般来说,系统最终收敛到一个状态,会是什么样。此时的星体密度分布是什么样的。
折叠评论
加载评论中,请稍候...
折叠评论
caoyuan9642(作者)
3楼
额。。Ls这么有兴致。。
实现应该是不难的,就是电脑可能会很卡。
我打算有空的时候编来玩玩。
LS如果真的这么有兴趣,去百度搜索Phun....是一个专门用来仿真2D物理世界的软件。
你就在里面放上成千上万个小球,设上引力,不考虑质量,开始仿真就行了~
我拿来仿真过理想气体模型,弄得电脑很卡
折叠评论
加载评论中,请稍候...
折叠评论
4楼
楼主加一个行星,设定初速度,质量,围绕恒星运动,然后从行星表面发射一颗卫星,初速度,角度,etc。

还可以加多一个维度,做成3D的,允许调整观察角度。最后是图形反锯齿,根据不同变量(时间,位置,速度,etc)彩色化。

最后变成一个精美的演示程序。
折叠评论
加载评论中,请稍候...
折叠评论
5楼
然后最好可以取物体之间的距离,以运动点为时间参照,加入相对论。
+50  科创币    caoyuan9642   2010-11-20   
折叠评论
加载评论中,请稍候...
折叠评论
6楼
观看不能……
折叠评论
加载评论中,请稍候...
折叠评论
caoyuan9642(作者)
7楼
观看不能是没装Java把。。。
novakon说的对。。
图形反锯齿怎么弄?
求指导。。。
相对论太复杂了吧。。。
弄不好自己会搞晕的。。
折叠评论
加载评论中,请稍候...
折叠评论
8楼
AA有专门的算法,还分很多种,比如FSAA、TSAA,可以交给GPU完成,还有Intel的MLAA。如果不是太复杂,即使G98这种入门级的GPU也能实现。真正的“强大的3D能力”恐怕还是得靠CPP吧,用上DirectX和OpenGL
+20  科创币    caoyuan9642   2010-11-21   thanks
折叠评论
加载评论中,请稍候...
折叠评论
9楼
装了也看不了
折叠评论
加载评论中,请稍候...
折叠评论
2010-11-21 12:30:57
10楼
引用第7楼caoyuan9642于2010-11-20 19:44发表的  :
观看不能是没装Java把。。。
novakon说的对。。
图形反锯齿怎么弄?
求指导。。。
相对论太复杂了吧。。。
.......

尝试调用OpenGL。OpenGL的绘图是可以开反锯齿的,利用显卡绘图速度也很快,可以考虑。
折叠评论
加载评论中,请稍候...
折叠评论
caoyuan9642(作者)
11楼
我现在处在的瓶颈就是Java直接绘图的速度
以及3D绘图的映射
就是说,Oxyz空间中的点映射到屏幕上的哪个点看起来比较顺眼
前几天本来编了个绘制波函数图像的程序,
弄得是类似斜二测画法的绘图
但是看起来太萎缩了。。。
竟然一个球看起来是扁的。。。
LS几位的指导应该很有帮助
折叠评论
加载评论中,请稍候...
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png