[交叉学科]用计算机看混沌现象
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左右比较好(坐标的单位是像素)


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


但是,混沌终究会产生规律:
Chaos1.GIF


Chaos2.PNG


Chaos3.PNG


Chaos4.PNG




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


这就是混沌的奇妙所在!


还挺好玩的~


论坛MS不得直接播放Java Applet...
上传附件吧。。
不知道怎么在Eclipse里面生成.jar...
只有用个.html凑合了。
gravity.rar
5.00k
RAR
11次下载

+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几位的指导应该很有帮助
折叠评论
加载评论中,请稍候...
折叠评论

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

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
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