视错觉、镜子原理和观察者
摘要: 1、视错觉我不知道大家看没看过一种视错觉雕塑,非常好玩,如下视频:这种视错觉我在国内也见过,就是一个佛像,他的脸其实是朝向纸面内镂空的,但是当你看它的时候,你会觉得那是一张向纸面外凸起的佛像。这还不是
1、视错觉 我不知道大家看没看过一种视错觉雕塑,非常好玩,如下视频: 这种视错觉我在国内也见过,就是一个佛像,他的脸其实是朝向纸面内镂空的,但是当你看它的时候,你会觉得那是一张向纸面外凸起的佛像。这还不是最让人吃惊的,最好玩的是,它的眼睛设计的很巧妙,它会一直盯着你看。当你走动,变换方向的时候,奇怪的事情发生了:这个佛像的脸也会朝向你而转动,而那双眼睛会始终盯着你看。 当然这是一个巧妙地视错觉设计,如果我们这个网站里谁有本事独立设计出这种视错觉作品来,我会给他拜三拜。 但是,我想说的,它这种视错觉作品的一种奇妙的观察者依赖效应。具体地就是,当你看着附作品的时候,佛像的头会跟着你转,而同时,当另外一个观察者盯着佛像看的时候,佛像的脸又会跟着他转。如果你们两个分属不同的方向,那么佛像就会既看你又看他。 这怎么可能呢?佛像不是一个佛像吗?怎么可能既看你又看他呢?道理很简单,这就是佛像本身并没有动,是你观察者的视错觉把佛像“解释”为会朝着你看的,所以两个观察者看同一个佛像,就会解释出两种不同的超向。所以,恰恰是看(观察这个操作)创造了佛像头的朝向这个结果。 2、镜子原理 我们暂且把这种依赖于看(观察)的原理称为镜子原理吧,因为,其实镜子就是一种最司空见惯,但是却最能体现不同的观察者会看出不同的东西的事物来。比如你照镜子的时候,你就在镜子中看到了,他照镜子的时候,他就看到了他了,但是镜子还是一个镜子。更有意思的是,你从这个角度看镜子,你会看到一部分世界,而另外一个人从另一个角度看镜子,就会看到另外一个不同部分的世界,仿佛这个小小镜子中包含了整个大千世界一样。 其实,镜子并没有包含世界,它仅仅完成了光线的反射,而不同的观察者从不同的角度去观察的时候,它却会看到非常不同的世界,所以,是观察者决定了它所要看到的东西,而那个客观事物,仅仅是一面镜子。 记得很早的时候,东方和尚曾经写过一篇寓言故事://tu.ta7.cn/365img/icp.pppf.com.cn ... p?id=8364&user=东方隐 其中的寓言2便是一个讲镜子原理的故事,那里面的月亮便具有上面的佛像的特性。 3、从面向Agent到面向元胞的计算 好了,上面都说的是大道理,我们应该如何应用这个镜子原理呢?其实,工程中已经有很多实际的应用,只不过大家没有从观察者的角度去说罢了。比如,你考虑设计一个计算机模拟程序,要模拟100个小球的运动,当然,最直接的办法就是把这100个小球都当成一个独立的对象,把它们赋予若干比特的属性代码,写出他们的行为方式,然后把它们画在屏幕上让大家来看。这种方式对于程序设计者来说,非常有效。 假如你要模拟的小球数量增多,变成了100000000个,并让这堆球在屏幕上演示。可想而知,如果你还用面向Agent的方法,为每个小球创造一个对象代码,那么,你的计算量就会变得非常大,程序就非常非常慢。那么,面对这种大规模的仿真,工程技术人员们是如何解决的呢?这个时候,人们建模不再建模每个小球,而是建模屏幕上的像素,假设屏幕是100*100像素的,把每个像素变成一个元胞,那么我只需要建立10000个对象就可以了,这个时候小球们按照叠加原理就变成了屏幕上元胞上的色彩属性,换句话说,粒子变成了波,原来的粒子不存在了。那么我们怎么知道这模拟的是100000000个小球的运动呢。答案就在于前面所说的观察者的镜子原理,其实当你观察这些“无意义”的波动的时候,你的眼睛和大脑就会下意识的将这些波解读成一个个分立的小球,从而,把小球“解释”或者说“观察”出来了。 具体眼睛是如何解释出小球的,我们又应该如何设计像素之间的交互规则而模拟小球的运动呢?我还不能非常确切地回答这个问题,但是可以肯定的,这就是我们眼睛在做傅立叶变换,我们看到的不再是时域上的信号,而是变换成了频域上的信号,那么有限的时域就可以编码出无限的频域的波,所以,原则上,我们想要多少小球就有多少小球。 这样讲可能有些抽象,但是其实了解一下耳朵听声音的运作其实就能把这个问题想得更明白一些。我们知道,耳朵听到的就是一个时间轴上的波形,无论多么复杂的声音,多少个人喊,多少个乐器合奏,它总是反映成一维时域上的波形。而之所以你能够区分出这是不同的人在说话,这是不同的乐器在弹奏,是因为你的耳朵在做傅立叶变换,从这些时域信号中提取出频域的信息,甚至是更高的变换域(对频域信号再做类似傅立叶变幻的操作)中的信息(比如旋律域),在这些更高的变换域中,你分离出来了不同的个体:哦,这是东方和尚在跟Jake吵架,那是一个吉他加一个二胡的演奏,等等。 假如你是上帝在设计宇宙,你一定要学会用镜子原理,因为你可以通过最小的设计,让你的那些玩家“解读”出来最多的信息。有一个玩家进去,它便能解释出来一个不同的世界,这样玩家多了,世界也就多起来了,而你并不需要放进更多的东西进去。 我们可以发散思维想一想,如何利用声波和傅立叶变换的原理而设计出来最小设计带来最大信息的游戏出来。 原文地址:http://swarmagents.com/bs/membership/viewelite.asp?id=13981&user=jake&cid=20
请微信扫码浏览全部文章