从“元宇宙”到《头号玩家》,我所思考的二维平面的移动


元宇宙是什么?

最近”元宇宙“的概念在各种平台上大火起来。

很多人,也包括我在内,一开始并不清楚”元宇宙“是什么,作为一个从未接触过的词汇突然爆火,我相信大部分都和我一样是存在一定的疑问的。我用北京大学陈刚教授、董浩宇博士的话来简单描述一下,那就是:“元宇宙是利用科技手段进行链接与创造的,与现实世界映射与交互的虚拟世界,具备新型社会体系的数字生活空间。”


《头号玩家》的虚拟空间移动  

 从我的角度来看,我第一反应便是之前看过的一部电影《头号玩家》,电影讲述了一个现实生活中无所寄托、沉迷游戏的大男孩,凭着对虚拟游戏设计者的深入剖析,历经磨难,在虚拟世界中找到隐藏在关卡里的三把钥匙,成功通关游戏 (这部电影我强烈推荐大家去看)。虚拟世界作为一种在小说、电影等等中经常出现的科技,凭借”元宇宙“概念的爆火,可能真的要借此登上现实的舞台了。


《头号玩家》中,主角登录”绿洲“(可以认为是电影中的”元宇宙“的名字)采用的可以简单认为是vr设备。其中的移动方式,是在一个可多方向变化的传送带上,进行“原地踏步”——每往一个方向移动,传送带便反方向移动,就像跑步机一样,虽然体感上完成了向前移动的形式,但是位置却没有发生变化。当时我在观影中就在思考,我们在代码中,经常以什么方式实现移动?


 代码中的二维平面移动 

我们考虑简单的形式,二维平面上的移动。

假设一个点可以往上下左右四个方向移动,每次移动一个单位距离。为了方便起见,我们先定义平面直角坐标系。设点 a 的位置为(0,0)。则它可以移动到(-1,0),(1,0),(0,-1),(0,1)四个位置,也就是:(c++语言)。

从“元宇宙”到《头号玩家》,我所思考的二维平面的移动

那如果是八方向移动呢?即可以移动到(-1,0),(1,0),(0,-1),(0,1),(-1,1),(1,1),(-1,-1),(1,-1)。我们每次移动需要去考虑八个变量和ifelse?那如果方向更多呢,像《头号玩家》中可以360°无死角移动呢?


显然,这种单一的每次模拟一个方向操作是比较繁琐的,和不够普适的。如何优化?这就需要借助到数组和循环。请看如下操作:

从“元宇宙”到《头号玩家》,我所思考的二维平面的移动

其实简单来说,就是事先把方向移动导致的坐标变化利用数组存储。这样利用一次循环遍历数组内的每个内容就非常的方便的求解出多方向移动后的位置了。相应的,如果方向变得更加多样化,那只需要利用循环和三角函数维护 fx 与 fy 数组即可(如下代码)。这也是在算法竞赛中,特别是搜索和图论方面经常使用的技巧,可以很简单的就处理多方向移动问题。

从“元宇宙”到《头号玩家》,我所思考的二维平面的移动

当然移动方式的处理还有很多种,甚至虚拟世界里应该是三维移动,即还存在高度的概念,当然因为涉及到的东西比较复杂,这边不过多赘述。

有兴趣的可以持续关注我们,之后会不断的更新相关内容。同时我们的课程中也有对此的一些解答,欢迎各位的参与。


零基础程序语言入门班

零基础程序语言入门班详情介绍


学员要求

对编程有兴趣,零基础的孩子。


上课时间

每周日下午2-5点


上课地点

福田区百花新天地3楼


师资介绍

何老师,计算机专业硕士保送生,现役ACM-ICPC队员,今年获得ICPC银川站金牌,CCPC银牌,EC铜牌以及邀请赛金牌。何老师不仅参赛成绩斐然,在教学上也有丰富经验,曾担任2019年CSP-S提高组集训班老师,以及数据结构专题班老师,教学细致耐心。


课表详情:

从“元宇宙”到《头号玩家》,我所思考的二维平面的移动



详情可扫描二维码联系郑老师咨询了解

从“元宇宙”到《头号玩家》,我所思考的二维平面的移动

毕莘教育咨询(深圳)有限公司围绕信息学竞赛普及组、提高组、省赛、国赛进行培训,同时提供与信息学相关的高校自主招生政策咨询。教研团队由国内顶校师资构成,深圳本地教学团队由来自清华、北大等顶尖名校的硕士、博士研究生及NOI、ACM- ICPC退役选手组成。自成立已开展多次培训,服务学生数百人次。

原创文章,作者:深圳信息学_中小学编程_编程培训_信息学竞赛_毕莘教育咨询(深圳)有限公司,如若转载,请注明出处:深圳信息学_中小学编程_编程培训_信息学竞赛_毕莘教育咨询(深圳)有限公司

联系我们

教务老师:余老师
联系电话(微信同号):14774755240
在线咨询:点击QQ在线咨询

QR code