Phun-有趣的二维物理引擎

最近对物理引擎产生了很大的兴趣。我了解了一些常见的物理引擎,有2D的或3D的;也有基于各种语言的物理引擎;比如基于Java,基于JavaScript(浏览器脚本,与Java无关),还有Flex(Adobe公司一个基于ActionScript的开源框架)的物理引擎APE,常用来做一些逼真的交互性较强的网页游戏。 对于很多物理引擎框架,想要使用它,不仅需要学习语言,还需要学习各种API,实在是个麻烦事儿。 我推荐一个国外的开源物理引擎:Phun。Phun提供了一个友好的界面,很有趣,我们可以自己设计各种物理道具用于模拟很多物理现象,非常逼真。准确的说,它是一个Sandbox,可以当成一个游戏。 当代码的外壳被赋予算法的灵魂,往往可以产生美妙的东西。 这实在是一件很有意思的事情。在面向过程的语言,比如C中,任何一步的输出都是确定的,它在内存中是0还是1也是确定的。 而在这种模拟的物理环境(也是程序语言写的)中,一个物体的状态是由上一个状态以及其它物体对它的影响(比如万有引力,碰撞等)所决定的,这就像一个无限长的“状态链”,一直延续下去,从而形成了所谓的“时间”这个维度。如果比作一个函数,那么定义如下:状态输出=F(当前状态,外界影响)。而状态输出又继续作为下一个函数的一个输入(当前状态)。这样的一条状态链,它有头吗?有尾吗?它是确定的?还是不确定的? 在这个模拟的物理环境中,我们可以通过计算提前知道物体的状态及演变规律,仿佛一切都是确定的。但是在现实生活中是否也是这样呢?尽管学术上用遗传算法、蚁群算法来模拟演变规律,但这又能精确到什么程度呢?现实生活中,影响一个物体的外界变量太多了,(比如万有引力,从精确性上,就要考虑周围环境中无数的物体、分子)。我们知道,计算机算法中有个著名的NP难题,是关于能否将一个算法的时间复杂度从指数级降为多项式级的问题。一个问题的规模变大,即使算法可行,在时间(人类时间)上也是不可行的;常见的是汉诺塔问题,当问题的规模较小的时候,我们的电脑用递归算法都可以轻松地解答出来,但仅仅当问题的规模(盘子个数)增大到64左右时,即使现在世界最先进的计算机也要运算上百万年。这显然是不可行的,何况现实世界的问题规模无比巨大。试想,当人类的传感器能够瞬间感知所有物体的状态,计算机的能力能够处理所有的输入,那么这个世界就是可以预测的,人类可以预测到未来,尽管现在看来不可想象,但谁知道将来呢? Phun物理沙盒官方下载:http://www.phunland.com/wiki/Home -EOF-

你可能感兴趣的:(Phun-有趣的二维物理引擎)