模拟鸟群扩散-Simulated bird group diffusion

code source

模拟鸟群扩散,来源于《python 极客编程项目》,其实比较难理解这个项目。

1.每个鸟个体之间必须保持一定的距离,同时所有的鸟之间的距离必须小于某个值(阀值)。

2. 鼠标左键可以添加鸟,右键点击可以制造鸟的“天敌",当然其效果类似图2,是鸟的速度相反

3.初始每只鸟的速度随机大小,速度方向也是随机的

4.代码比较难懂,我做了详细了注释后,发现不会的东西太多

所预备的基础知识:

线性代数

python matplotlib.animation  python.pyplot  动画及绘制模块

python  numpy的矩阵相加减,乘除求模(范数)

python scipy.spatial.distance 求矩阵范数

(argparse 命令行的使用啥的,了解即可)

难的东西,估计只有绘图才能讲清。

tick函数

就简单提提这个tick()函数,这个函数其实不是递归的,而是通过 class Birds,里的tick()调用的,然后传入到animation(即绘制动画的函数),通过它每个一段时间更新图画的...


图1


图2


tick()方法

更新鸟的位置,其实是通过pos的改变,所以可以看到:

pos--->position 位置      vec-->velocity速度

只是通过在原有的速度上,每次(一定的时间内,interval)增加一定的速度变化值。它是矩阵...

所以就这个矩阵就不好说了。

做了小demo,后,发现自己的基础知识差的可怜,以后多写写基础的东西。

图片:来源Google,如侵权,联系后立删

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 10,594评论 3 23
  • 【Android 动画】 动画分类补间动画(Tween动画)帧动画(Frame 动画)属性动画(Property ...
    Rtia阅读 11,381评论 1 38
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,841评论 1 32
  • 1一个工人下班后被反锁在冷库里了,第二天同事发现的时候,他已经冻死了。然而令人惊讶的是,那天冷库根本没有通电,冷库...
    偷魔法的兔兔阅读 2,662评论 0 0
  • 好久没有看过电视剧了。最近的新电视剧,好像除了高清之外,也是也来也没有感觉了。 我目前的状态,就像是聚宝盆里的沈万...
    00700er爱写写阅读 4,112评论 0 0