手机浏览器扫描二维码访问
简介:回答问题之前我们先来开一个脑洞:我们这个世界是某种计算主机虚拟出来的,类似黑客帝国一样;这种计算主机有类似我们现实世界计算机的浮点运算的计算特性。如果从这个角度来考虑,对于这个问题我可以提供一个有趣的思路。既然已经提到了现实世界的数值精度问题,那么我们身处在这个黑客帝国世界里,怎样才能感知到世界底层正在进行的数值计算过程,从而还进一步能了解到其浮点运算的特性呢?其实,我们可以从我
书名:如果光速没有上限,世界会怎么样?
作者:佚名
来源:回答
回答问题之前我们先来开一个脑洞:
我们这个世界是某种计算主机虚拟出来的,类似黑客帝国一样;
这种计算主机有类似我们现实世界计算机的浮点运算的计算特性。
如果从这个角度来考虑,对于这个问题我可以提供一个有趣的思路。
既然已经提到了现实世界的数值精度问题,那么我们身处在这个黑客帝国世界里,怎样才能感知到世界底层正在进行的数值计算过程,从而还进一步能了解到其浮点运算的特性呢?
其实,我们可以从我们自己构建过的虚拟世界的创造者的角度来同理思考这个问题。
人类构建的最多的虚拟世界是什么呢?
答案是3D游戏,尤其是3D的MMORPG(网络多人角色扮演)类别的游戏。
虽然人类现在创造的3DMMO游戏还很简陋,离真正的「黑客帝国」还差很远,但是某些特性还是有可类比性的。
假如我们在一个3D游戏中,要如何了解这个游戏浮点方面的特性?
虽然身为玩家,我们没办法了解游戏底层的计算过程,但是我们可以观察到与浮点计算有关的一些画面表现,比如说游戏引擎在处理模型细节方面的表现来分析运算精度方面是否有问题。
在3D游戏中,所有的画面渲染和三维计算都是用浮点方式进行计算的,这种计算非常消耗系统的资源,所以硬件厂商为这种计算,专门设计了具有强大浮点计算能力的GPU芯片的显卡来专司这方面的计算需求,但是好的程序员还是会非常谨慎地优化算法,力求节省计算资源,以免造成系统的卡顿。
在3D游戏中,有一个很重要的优化算法的地方就是游戏的空间碰撞问题。
说白了就是3D物体的碰撞检测,简单来说,就是判断游戏里两个物体有没有碰撞,举个简单例子:
上面是游戏世界中的两个小球,如何判断它们有没有碰撞呢?
这用初中数学知识马上就可以知道。
计算圆心之间的距离d和两球半径和r1+r2,如果d<=r1+r就说明发生了碰撞。
三维坐标系中,距离d可以用距离公式计算,超简单是不?
但是如果有三个物体呢,那就麻烦一点,需要两两比较,做3次计算,四个物体自然做6次运算。
但是如果有100个物体呢,那我们就需要5000次的计算了,在游戏中往往会有更多的运动物体需要计算,而且这些物体的形状往往是非常不规则的,比如墙壁、河流、树木、人物、武器等等,那么这些计算量就马上指数上升起来。
这时候,程序员就需要运用各种算法技巧来减少运算量,比如四叉树:
当然,就算有了这些方法,我们也要不能无限精度地计算距离,当两个物体挨得很近的时候,出于计算量的考虑,我们一般把浮点精度都控制在一定范围内。
那么控制了计算精度以后会发生什么事情呢?
如果出现了碰撞检测精度不足的情况,往往就会出现一定的显示BUG,这种BUG就叫作「穿模」。
服装穿模
3D游戏中的慢速运动下的静态穿模BUG主要有两种因素引起:
一种是类似上图的模型设置问题,有些模型并没有检测碰撞;
还有一种则物体模型过
在这个世界,有狐仙河神水怪大妖,也有求长生的修行者。修行者们,开法眼,可看妖魔鬼怪。炼一口飞剑,可千里杀敌。千里眼顺风耳,更可探查四方。秦府二公子‘秦云’,便是一位修行者...
陆家有两个女儿,小女儿是天上的月亮,大女儿是阴沟里的死狗。陆妈你长得不如你妹妹,脑子不如你妹妹,身材不如你妹妹,运气不如你妹妹,你有什么资格过得好,有什么资格幸福?陆微言姐姐,你的钱是我的房子是我的,你男朋友也是我的。你就安心地当又穷又没人要的老处女吧。陆一语凭什么?我也肤白貌美大长腿好么?分分钟能找个男人...
婚后 情人节,韩经年问今天怎么过? 夏晚安搂着被子,昏昏欲睡的答睡觉。 圣诞节,韩经年问今天怎么过? 夏晚安抱着枕头,漫不经...
少帅说我家夫人是乡下女子,不懂时髦,你们不要欺负她!那些被少帅夫人抢尽了风头的名媛贵妇们欲哭无泪到底谁欺负谁啊?少帅又说我家夫人娴静温柔,什么中医...
一觉醒来,世界大变。熟悉的高中传授的是魔法,告诉大家要成为一名出色的魔法师。居住的都市之外游荡着袭击人类的魔物妖兽,虎视眈眈。崇尚科学的世界变成了崇尚魔法,偏偏有着一样以学渣看待自己的老师,一样目光异样的同学,一样社会底层挣扎的爸爸,一样纯美却不能走路的非血缘妹妹不过,莫凡发现绝大多数人都只能够主修一系魔法,自己却是全系全能法师!...
她本是实力强悍,医术超群的世家家主。 一朝穿越成将军府的废柴嫡小姐,成为第一位被退婚的太子妃,人人嘲讽! 选秀宴上,她被赐嫁给鼎鼎有名的残废王爷。 ...