沙漏游戏的Matlab实现

今天在技术邻上看到了一个有趣的帖子:http://www.jishulink.com/content/post/276715

作者是Abaqus专家 所谓何事,介绍了用Abaqus模拟中的沙漏效应。

这个和我们常说的“沙漏”还不是一回事儿。


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


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


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


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


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

无标题.png

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

QQ截图20160624235141.jpg


由此可见,简单地规则,可以在一定程度上反映物体的运动规律。


附件包括:

1.我写的Matlab代码,可以直接运行。如果读懂了这个简单代码,可以自己做一些尝试,玩一玩其他形状的砂漏以及其他的落砂规则。

沙漏游戏的Matlab实现的图3沙漏代码.zip

2.几篇相关的Paper,作为砂漏的科普文章。

沙漏游戏的Matlab实现的图4The Hourglass.pdf

沙漏游戏的Matlab实现的图5Mechanics of the sandglass.pdf

沙漏游戏的Matlab实现的图6Ticking hour glasses-Exp analysis of intermittent flow.pdf



(19条)
默认 最新
感谢分享
评论 点赞
👍🏻
评论 点赞

查看更多评论 >

点赞 6 评论 25 收藏 2
关注