找回密码
 注册
Simdroid-非首页
查看: 63|回复: 0

沙漏游戏的Matlab实现

[复制链接]
发表于 2016-6-30 17:59:36 | 显示全部楼层 |阅读模式 来自 中国
这个和我们常说的“沙漏”还不是一回事儿。

不过我由此想到我自己以前做过的一个小的程序,一个沙漏游戏。

这个游戏中,并没有把砂看作连续介质,无需用连续介质的方法来模拟它。把每一个像素点看作一粒砂,砂动=像素点移动。

这个游戏中,我们可以自己定义沙漏的形状(黑色的是砂漏边界),沙漏中有两种颜色的砂,空白之处用白色表示。每一个计算步中,砂子一一定的概率向自己的左下、右下、下方移动,当然前提是那里是空格。

熟悉CA的朋友应该知道,这是一个简单的CA,规则十分简单。MATLAB代码也很简单,初学者都能看懂。如果有哪里写得不好,还请大家指正。

计算步增加可以类比时间的流逝,最终砂子会慢慢落下、在底部形成堆积体,下图是计算的中间结果。

细心的读者可以发现,沙漏中砂下落时,首先下落的是中心部分的,第五张图中用两条黑线做了标记,黑线以外的砂在计算中一直没有动。当然,如果计算步足够多,它们也是会落下的。这和试验中观察到的现象非常一致:

由此可见,简单地规则,可以在一定程度上反映物体的运动规律。
我写了Matlab代码,可以直接运行。如果读懂了这个简单代码,可以自己做一些尝试,玩一玩其他形状的砂漏以及其他的落砂规则。
还找了一些相关的文档 作为沙漏的科普文章


需要代码的可以留邮箱
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-20 20:16 , Processed in 0.027554 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表