用javascript模拟分子扩散并思考熵与序
本次主要是思考一些哲学问题,而不是为了单纯的发什么代码,因为,这些代码其实很简单,当然,简单归简单,我肯定还是会贴出来的。
这个同样也是MBA课堂上摸鱼的时候随便弄的而已,和上次那个小人互殴的东西其实异曲同工,只是少了战斗的元素。
我的设定很简单,两个群体,可以视作两个分子群,除了不能离开画面以外,可以在整个画面随机移动,当他们数量低的时候,看不出什么,但是,当他们的数量足够多的时候,就可以看到类似分子扩散那样的效果。这些分子像极了滴入水池中的墨点,在不规则无序的布朗运动的作用下最终会扩散到可以活动的边界。
这让我想到了熵增的概念。一个封闭的系统总是会不断的熵增,最终达到无序的最大化。同时,一个扩散的系统,除非受到边界(不可抗因素)的约束,不然总是会持续扩散的。我觉得对于群体,对于文明,对于生命而言均是如此。我们在微观尺寸上看待分子、原子运动的时候,感觉这些分子、原子都是无序化的东西,但是由他们组成的生命却通过摄取能量持续的对抗熵增,甚至能实现永生(即彻底的逆熵,但是必须有能量的输入)。我们再看看我们现在所处的宏观世界,一切生命似乎都充满了某种独立意志,小到一个孢子,大到一个人,都似乎成了一个个有意识的独立的系统,似乎生命就成了“无序”的反义词。但是我觉得,这个“宏观”其实是不够宏观的,看问题的尺度还是太小,偏安于极短的历史周期和我们这个小小的星球。我们不妨往人类文明或者说智慧文明的发展方向继续思考下去。如果文明持续发展,进入了星际阶段,那么文明就会像下图中的一个个小色点一样做布朗运动持续对外扩散。即使有的文明挂了,在宇宙尺度上,依然有无数的文明在持续着这个扩散的过程。从这个超宏观尺度思考的话,文明的扩散和墨点在水池中的扩散竟然是何其相似!!也就是最智能的事物的行为竟与最简单的原子分子的看似无序的行为是相一致的。那么我就不得不思考两个问题了:
第一,原子分子这样的简单结构是否本质上是个超智能体,看似无序的扩散是不是其实是一种智能行为?
第二,生命的所谓逆熵是不是本来就是宇宙系统的一环而不是偶然,所谓的生命,本质只不过是超大分子,也许这些超大分子看起来似乎都有独立意识,似乎都有独立行为,但是当把他们看成一个整体的时候,竟发现他们是集体无意识的,是没有独立行为的,这实在是一种相当诡异的感觉。
于是我想到了太极的双鱼图,有序之中蕴藏着无序,而无序之中也蕴藏着有序,有无相生相容,似乎宇宙的热寂并不会是宇宙的尽头,似乎宇宙中注定会有生命能够解决大热寂的问题,最终实现系统的永恒轮转。
扯远了,就先想到这里吧。明天又要搬砖了。
情人节的时候画了一只轻松熊给我的在职研的同学兼同事。希望这次能成吧。
<html><body style="width:100%;height:100%;overflow:hidden;margin:0;background-color:black;"></body>
<script type="text/javascript">var w = window.innerWidth;var h = window.innerHeight;var arr = [];function randomGenerate(W,H,a,b,r,g,b){var div = document.createElement("div");div.style = "border-radius:20px;position:absolute;width:20px;height:20px;background-color:deepskyblue;"div.x = Math.random() * (W?W:w) + (a?a:0);div.y = Math.random() * (H?H:h) + (b?b:0);div.vx = (Math.random()>0.5?-1:1) * (Math.random()*2+0.5);div.vy = (Math.random()>0.5?-1:1) * (Math.random()*2+0.5);div.style.left = div.x + "px";div.style.top = div.y + "px";var r = parseInt(Math.random() * 255*(r?r:1));var g = parseInt(Math.random() * 255*(g?g:1));var b = parseInt(Math.random() * 255*(b?b:1));div.style.backgroundColor = 'rgb('+r+','+g+','+b+')';div.update = function(lerp){if(Math.random()<0.1) this.vx = (Math.random()>0.5?-1:1) * (Math.random()*2+0.5);if(Math.random()<0.1) this.vy = (Math.random()>0.5?-1:1) * (Math.random()*2+0.5);this.x += this.vx*lerp/10;this.y += this.vy*lerp/10;if(this.x<0){this.x = 0;}if(this.x>w){this.x = w;}if(this.y<0){this.y = 0;}if(this.y>h){this.y = h;}this.style.left = this.x + "px";this.style.top = this.y + "px";}arr.push(div);document.body.appendChild(div);}function run(){for(var i=0;i<500;i++){randomGenerate(w*0.05,h*0.05,1,1,5,1,1);}for(var i=0;i<500;i++){randomGenerate(w*0.05,h*0.05,w,h,1,1,5);}var lastTime = new Date();var currentTime = new Date();var lerp;function x(){currentTime = new Date();lerp = currentTime - lastTime;for(var i=0;i<arr.length;i++){arr[i].update(lerp);}requestAnimationFrame(x);lastTime = currentTime;}requestAnimationFrame(x);}run();</script>
</html>
用javascript模拟分子扩散并思考熵与序相关推荐
- 【JavaScript】JavaScript模拟实现面向对象一张图帮助你深刻理解原型链和原型对象
文章目录 一.JavaScript模拟面向对象 1.函数是类 2.函数中各种变量的声明 3.关于函数内的this 小结:JavaScript中函数是什么? 4.练习:面向对象思想编写Complex类 ...
- Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示
Matlab:利用Matlab编程实现模拟分子布朗运动的动画展示 目录 输出结果 实现代码 输出结果 实现代码 %Brownian motion clf; n=20; s=0.02; x = rand ...
- Javascript模拟c#中arraylist操作(学习分享)
最近在看javascript,在<javascript高级编程>中也学到了不少东西.但是在这里要感谢博客园的"汤姆大叔" 的无私奉献,他的关于javascript相关博 ...
- 模拟运行php,window_PHP+Javascript模拟Matrix画面, 直接存为*.php文件运行即 - phpStudy...
PHP+Javascript模拟Matrix画面 直接存为*.php文件运行即可. $color_back="#000000"; $number_w=8; $number_h=6; ...
- [小笔记]TypeScript/JavaScript模拟Python中的Range函数
[小笔记]TypeScript/JavaScript 模拟Python中的Range函数 李俊才/CSDN博客 CSDN用户名:jcLee95 邮箱:291148484@163.com 原创不易,感谢 ...
- Matlab动画模拟分子布朗运动的示例
Matlab动画模拟分子布朗运动的示例 %Brownian motion clf; n=20; s=0.02; x = rand(n,1)-0.5; y = rand(n,1)-0.5; h = pl ...
- JavaScript模拟实现先进先出、先进后出效果
JavaScript模拟实现先进先出.先进后出效果 JavaScript模拟实现先进先出.先进后出效果
- JavaScript - 模拟键盘输入支付密码
JavaScript - 模拟键盘输入支付密码 Max.Bai 2016-12-29 0x00: 发生了什么事 我做自动化测试的时候,需要自动化在页面上输入这个密码,什么样子的,看下面: 有没有很像支 ...
- 简单的JavaScript模拟时钟
文章目录 一.示例 二.源码 一.示例 JavaScript时钟 二.源码 html部分 <!DOCTYPE html> <html lang="en">& ...
最新文章
- mongodb 内建用户
- 实现网页中按钮刷新的N种方法
- 职业梦想是计算机的英语作文,我的梦想职业英语作文
- Window下mysql的安装
- UA MATH571A 一元线性回归II 统计推断1
- mysql purge进程_InnoDB Purge 的工作原理?
- html四个标签,基本的 HTML 标签 - 四个实例
- 【html、css、jq】制作一个简洁的音乐播放器
- REM中的几种发料方式
- 大数据量高并发访问的数据库优化方法
- jsf集成spring_Spring和JSF集成:异常处理
- 鸿蒙os全面升级,华为突然宣布,鸿蒙OS正式版6月底全面升级,幸福来得太突然...
- springboot怎么杀进程_全新Steam在线游戏 Among us太空狼人杀攻略
- JDBC连接数据库:单线程、多线程、批处理插入数据的对比
- 毛玻璃效果 php,CSS3如何实现磨砂玻璃背景效果
- ACL 2020投稿论文超3000篇,中国投稿量第一,录取率却未进前10
- 有朋友问了数据库ID不连续,怎么获取上一篇和下一篇的文章?(不是所有情况都适用)...
- “坦克大战”小游戏(C语言)源代码及其详解注释
- 分析微信聊天记录(2)——分析单人的微信聊天记录
- 爬取贝壳网深圳二手房实战