11-14 5,176 views
作者:nenn(百度id:正正正正正好)
注1:本文中提到的所有Minecraft版本均为15w47a。
注2:禁庄转。
本贴的灵感来源于Linscraft的MAX_Mango(百度id:CSN8879 )及Captian_Baiqiu(百度id:马克西姆爵士),正是与他们的沟通才有了这个作品。本人在此向他们表示感谢,也希望本贴能够对Linscraft的作品《NAX-新城机场》有所帮助。
PAPI灯的基本介绍
PAPI灯即精密进近轨迹指示器(Precision approach path indicator,简称PAPI),其常置于机场跑道侧面距离跑道尽头约300米处,并告知飞行员是否位于正确的降落轨道中。
图片转自Wikipedia的Precision_approach_path_indicator词条。
PAPI灯通过颜色将飞行器的信息传递给飞行员。其单个灯组(2灯或3灯)如下图所示,一般使用四个灯组为飞机提供导航。其光源经过上下分隔以后,经过准直透镜准直后出射。所以当你从上方俯视PAPI灯时你可以看见白色,而从下方仰视时却可以看见红色。随着观察PAPI灯角度的变化,颜色的变化没有明显的过渡带,因此其可以帮助飞行员判断飞机的降落角度。
图片转自:Research Engineers官网(2灯、3灯)
每个灯组的朝向通过升降控制器调整以后会略微不同。如果你是飞行员的话,降落时可能会看见下面的几种情况,它们分别传达了飞行器位置的不同信息。
远高于正常降落轨道。略高于正常降落轨道。已进入正常降落轨道。略低于正常降落轨道。远低于正常降落轨道。
图片转自:Research Engineers官网(飞行员视角)
这样一来,飞行员根据PAPI灯显示的颜色就可以判断是否处于正确的降落轨道。是不是一个机智的方法?
关于PAPI灯的更多细节可以参看Research Engineers官网上提供的技术细节(Data Sheet)。但可能打开较慢,所以请稍等一会儿。
PAPI灯在Minecraft中的实现
1.9的快照15w41a中加入的滑翔翼使得玩家在生存模式中进行长距离空中移动成为可能。《【15w42a快照】浅谈1.9交通大改革》一文中,本人就基于1.9的更新提出了使用滑翔翼的交通模式,并对滑翔翼的性能作了基本的测试。更加逼真地实现机场的功能,一方面可以帮助建筑玩家完善作品,另一方面其可以增加生存模式的趣味性。
文章开头已经提到,本作品的制作来源于建筑玩家的需求。关于PAPI灯的设计,MAX_Mango和Captian_Baiqiu提出的要求如下:
1)PAPI灯使用露出平地的白玻璃和红玻璃
2)使用纯红石机械切换PAPI灯
3)灯的间隔为2
4)电路体积尽可能小,且电路全部位于地下
基于这些要求,本人进行了不断的尝试和优化,最后完成了满足要求的PAPI灯。
夜间的视觉效果如下,白色玻璃下方的海晶灯是为了照明。当然你可以把它替换成除了红石块、活塞以及活塞不可推动的方块以外的任意方块,比如草方块。
PAPI灯的机械结构分析
这个方案中使用的PAPI灯的机械结构如下图所示:
红玻璃和白玻璃是PAPI灯的显示部分。该活塞架构并非随便设计的。这样的设计可以保证活塞经过相同的时序过程就可以替换彩色玻璃,这从一开始就从时序简化了电路。要理解这个活塞架构并不困难,我们可以看看下图:
草方块表示地面。蓝色玻璃表示的是底部三级活塞推拉组的工作区(推拉组可拉动或推动的方块范围。概念详见:《【活塞门基础】递推递归活塞组的实现及其通式》)。白色玻璃表示方块存储区,存放待替换的PAPI灯。海晶灯代表彩色玻璃下方的方块,平时应与地面齐平。橙色玻璃表示的则是一个活塞轮结构。
所以不难理解,其用三级活塞推拉组实现PAPI灯的显示和收回,并且需要一个方块大小的存储区来存储地面方块。活塞轮实现了PAPI灯颜色的更换。该结构的好处就是可以使用相同的时序来驱动活塞,也就是说活塞使用同一套动作就可以使得PAPI灯更换颜色。所以这样的机械结构就自带了一种类似T触发器的反转特性。直观理解就是,运行一次电路,红灯变白灯,再运行一次,白灯变红灯。
使用单片的活塞结构是考虑到其具有可堆叠且间距为2的要求。另外,单片的结构对于活塞轮的使用会更加方便。
PAPI灯的时序分析
PAPI灯的时序非常简单,三级活塞推拉组会被使用两次,分别当做二级和三级的推拉组使用。首先用二级推拉组的功能收回地面方块,并把它储存在方块存储区,然后用三级推拉组的功能收回地面上的PAPI灯,用活塞轮换色,然后使用二级推拉组的功能推出换色以后的PAPI灯和地面方块。其结构时序可以用下面的图示来表示。
可以看见一次运行以后,红玻璃和白玻璃互换了位置,其余方块均不变。时序难度和一般的4×4活塞门相仿,相对来说比较简单。
PAPI灯的布线分析
要实现单个PAPI灯并不困难,使用简单的数电知识可以很方便地实现功能。前面的时序分析一张图就已经把所有的时序都说明白了。当然,这是在不考虑电路是否臃肿以及是否可堆叠的情况下。当电路必须要可堆叠时,排除布线之间的干扰就不再是一件简单的事情了。
布线可以保证地面上有非常好的显示效果。因此这个作品完全符合文章开头的几点要求。
考虑到布线部分属于技术活而非需要许多思维碰撞,因此就不介绍细节了。每一种方块代表的含义如下所示:
过零感应器(双边沿检测器)
基于模红的长负脉冲发生器
阻隔红石线实现密堆叠的辅助方块
总控线
三级活塞推拉组前二级伸长驱动线
三级活塞推拉组前二级收回驱动线
三级活塞推拉组三级第一次收回驱动线
脉冲延长器
三级活塞推拉组三级伸长驱动线
三级活塞推拉组三级第二次收回驱动线
过零感应器将之前提及的类似T触发器的反转特性转化为类似拉杆的直接作用。有了这部分电路,拉下拉杆就显示红灯,拉上拉杆就显示白灯。这就为之后的控制电路做好了准备。
值得一提的是,这个方案的布线并非完全抗干扰。当方案密堆叠时,只有同时运行需要换色的模块才能保证电路的正常运行。乍一看这是个非常大的bug,但仔细探讨就可以发现,使用数电模块控制时非常容易避免这个bug。
虽说布线这部分没有进行细节介绍,但这个作品的含量中,布线占了相当的比重,个人评价约占总技术含量的60%(主要取决于思维时间成本)。
PAPI灯的控制分析
根据前文给出的参考资料,4灯的PAPI灯只可能显示5种状态。若需要达到五个按钮,按下其中一个后PAPI灯就显示出5种状态中的一种这样的功能,使用单选器和译码器可以非常容易地实现。
考虑到这5种状态的特殊性, 译码器可以使用无延时二极管大大简化。
加上基于RS锁存器的快速响应的单选器,一个带有五种状态切换按钮的PAPI灯就完成了。这五种状态分别是:
1)4白灯0红灯
2)3白灯1红灯
3)2白灯2红灯
4)1白灯3红灯
5)0白灯4红灯
控制电路部分的方块代表的含义如下所示:
PAPI灯的存档下载
本作品制作于RMC服务器,通用于1.8的所有版本和1.9所有预览版。另,记得tp到坐标0,0。可以键入下面的指令:
yooooooo~RMC号成功进入降落轨道√
完整的PAPI灯系统
根据前文介绍的PAPI灯工作原理,我们知道PAPI灯的关键在于准直很好的平行光,而这恰恰是在不使用cb的情况下式无法在MC中实现的。所以可以尝试即时反馈的方法,根据玩家的方位来显示颜色。
根据这样的思路,完整的PAPI灯系统理应由三个子系统组成:
1)PAPI灯显示系统
2)PAPI灯控制系统
3)玩家方位检测系统
而之前给出的所有内容,均围绕着1)和2)。3)则是另一个方面的问题。要解决在不试用CB的情况下玩家方位的检测问题,其使用的能力就不局限与机械本身,这还需要我们对MC的游戏机制有更深入的认知。
经过与Dim White(官网账号:DimWHite,百度id:滚大幕)的共同探讨,查阅资料后,我们暂时认为根据雪人在离玩家32格范围内会随机移动的特性可以提供很好的检测方案。这相比于其他怪或动物的检测方法,优势在于:
1)雪人在生存模式中易得
2)检测范围较大
3)使用较多雪人时可以保证玩家检测的可靠性
而局限在于:
1)需要较多数量的雪人,大量使用会造成大量负荷
雪人虽然在某些生物群系下无法生存,但雪人可以替换为其他高度大于1的动物,因此这并非不可避免的问题。
根据之前《【15w42a快照】浅谈1.9交通大改革》中提供的测试数据,降落时与地面的夹角约为6度左右。考虑到检测装置需要埋藏在不可见的跑道下方,因此悲观估计,实际检测的高度大约在跑道上方最高约30格处。对高度的检测精度取决于检测模块的高度,而使用2高动物的检测模块一般情况下可认为其高为5左右。因此高度检测的精度即5。
当玩家飞行至距离地面30格高,飞行方向与地面的夹角约为6度左右时,那么玩家还需要继续滑行约285格。由于高度的检测精度为5格,因此我们使用2高生物可以获得6个可能的玩家高度区间。基于这样的参数设定,我们可以估算出,比较约每48格的检测装置测得的玩家高度区间即可满足对飞行角度的检测。
由于种种原因,具体的装置并未制作,可以料想还存在许多细节问题无法解决,比如如何提高检测精度等。可以料想,使用CB的testfor指令可以使用相同的模式检测玩家飞行轨迹与地面的夹角,但CB的优势在于其高度检测的精度可以达到1格,且1.9中新的CB系统(《【15w43a快照】1.9独立的CB系统及其新应用》)将极大简化检测和处理模块。
特别感谢:
好时(百度id:Hershey4)为搭建官网做出的巨大贡献。
Dim White(百度id:滚大幕)关于玩家方位检测的探讨。
Linscraft的MAX_Mango(百度id:CSN8879 )及Captian_Baiqiu(百度id:马克西姆爵士)提供的关于PAPI灯的灵感和思路。
RMC平台及Linscraft新手群参与讨论的各位。
版权属于: Redstone Machinery Communication 红石机械交流促进会
原文地址: http://www.rmcteam.org/papi.html
转载时必须以链接形式注明原始出处及本声明。