作者:nenn(百度id:正正正正正好

注1:本文中提到的所有Minecraft版本均为15w47a

注2:禁庄转。

本贴的灵感来源于Linscraft的MAX_Mango(百度id:CSN8879 )及Captian_Baiqiu(百度id:马克西姆爵士),正是与他们的沟通才有了这个作品。本人在此向他们表示感谢,也希望本贴能够对Linscraft的作品《NAX-新城机场》有所帮助。


PAPI灯的基本介绍

PAPI灯即精密进近轨迹指示器(Precision approach path indicator,简称PAPI),其常置于机场跑道侧面距离跑道尽头约300米处,并告知飞行员是否位于正确的降落轨道中。

440px-PAPI_Jersey_Airport

图片转自Wikipedia的Precision_approach_path_indicator词条

PAPI灯通过颜色将飞行器的信息传递给飞行员。其单个灯组(2灯或3灯)如下图所示,一般使用四个灯组为飞机提供导航。其光源经过上下分隔以后,经过准直透镜准直后出射。所以当你从上方俯视PAPI灯时你可以看见白色,而从下方仰视时却可以看见红色。随着观察PAPI灯角度的变化,颜色的变化没有明显的过渡带,因此其可以帮助飞行员判断飞机的降落角度。

2-projector3_projector

图片转自:Research Engineers官网(2灯3灯

每个灯组的朝向通过升降控制器调整以后会略微不同。如果你是飞行员的话,降落时可能会看见下面的几种情况,它们分别传达了飞行器位置的不同信息。

远高于正常降落轨道。略高于正常降落轨道。已进入正常降落轨道。略低于正常降落轨道。远低于正常降落轨道。

pilots_view1pilots_view2pilots_view3pilots_view4pilots_view5

图片转自: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灯。

2015-11-23_18.29.42

夜间的视觉效果如下,白色玻璃下方的海晶灯是为了照明。当然你可以把它替换成除了红石块、活塞以及活塞不可推动的方块以外的任意方块,比如草方块。

2015-11-23_18.30.44

PAPI灯的机械结构分析

这个方案中使用的PAPI灯的机械结构如下图所示:

2015-11-23_18.36.11

红玻璃和白玻璃是PAPI灯的显示部分。该活塞架构并非随便设计的。这样的设计可以保证活塞经过相同的时序过程就可以替换彩色玻璃,这从一开始就从时序简化了电路。要理解这个活塞架构并不困难,我们可以看看下图:

2015-11-23_18.42.35

草方块表示地面。蓝色玻璃表示的是底部三级活塞推拉组的工作区(推拉组可拉动或推动的方块范围。概念详见:《【活塞门基础】递推递归活塞组的实现及其通式》)。白色玻璃表示方块存储区,存放待替换的PAPI灯。海晶灯代表彩色玻璃下方的方块,平时应与地面齐平。橙色玻璃表示的则是一个活塞轮结构。

所以不难理解,其用三级活塞推拉组实现PAPI灯的显示和收回,并且需要一个方块大小的存储区来存储地面方块。活塞轮实现了PAPI灯颜色的更换。该结构的好处就是可以使用相同的时序来驱动活塞,也就是说活塞使用同一套动作就可以使得PAPI灯更换颜色。所以这样的机械结构就自带了一种类似T触发器的反转特性。直观理解就是,运行一次电路,红灯变白灯,再运行一次,白灯变红灯。

使用单片的活塞结构是考虑到其具有可堆叠且间距为2的要求。另外,单片的结构对于活塞轮的使用会更加方便。

PAPI灯的时序分析

PAPI灯的时序非常简单,三级活塞推拉组会被使用两次,分别当做二级和三级的推拉组使用。首先用二级推拉组的功能收回地面方块,并把它储存在方块存储区,然后用三级推拉组的功能收回地面上的PAPI灯,用活塞轮换色,然后使用二级推拉组的功能推出换色以后的PAPI灯和地面方块。其结构时序可以用下面的图示来表示。

2015-11-23_19.15.33

可以看见一次运行以后,红玻璃和白玻璃互换了位置,其余方块均不变。时序难度和一般的4×4活塞门相仿,相对来说比较简单。

PAPI灯的布线分析

要实现单个PAPI灯并不困难,使用简单的数电知识可以很方便地实现功能。前面的时序分析一张图就已经把所有的时序都说明白了。当然,这是在不考虑电路是否臃肿以及是否可堆叠的情况下。当电路必须要可堆叠时,排除布线之间的干扰就不再是一件简单的事情了。

2015-11-23_19.34.37

布线可以保证地面上有非常好的显示效果。因此这个作品完全符合文章开头的几点要求。

2015-11-24_03.58.48

考虑到布线部分属于技术活而非需要许多思维碰撞,因此就不介绍细节了。每一种方块代表的含义如下所示:

120px-Lapis_Lazuli_(Block)过零感应器(双边沿检测器)

120px-Gold_(Block)基于模红的长负脉冲发生器

Block_of_Emerald阻隔红石线实现密堆叠的辅助方块

Grid_Red_Wool总控线

Grid_Light_Gray_Wool三级活塞推拉组前二级伸长驱动线

Grid_Yellow_Wool三级活塞推拉组前二级收回驱动线

Grid_Orange_Wool三级活塞推拉组三级第一次收回驱动线

Grid_Cyan_Wool脉冲延长器

Grid_Light_Blue_Wool三级活塞推拉组三级伸长驱动线

Grid_Magenta_Wool三级活塞推拉组三级第二次收回驱动线

过零感应器将之前提及的类似T触发器的反转特性转化为类似拉杆的直接作用。有了这部分电路,拉下拉杆就显示红灯,拉上拉杆就显示白灯。这就为之后的控制电路做好了准备。

值得一提的是,这个方案的布线并非完全抗干扰。当方案密堆叠时,只有同时运行需要换色的模块才能保证电路的正常运行。乍一看这是个非常大的bug,但仔细探讨就可以发现,使用数电模块控制时非常容易避免这个bug。

虽说布线这部分没有进行细节介绍,但这个作品的含量中,布线占了相当的比重,个人评价约占总技术含量的60%(主要取决于思维时间成本)。

PAPI灯的控制分析

2015-11-24_03.54.07

根据前文给出的参考资料,4灯的PAPI灯只可能显示5种状态。若需要达到五个按钮,按下其中一个后PAPI灯就显示出5种状态中的一种这样的功能,使用单选器和译码器可以非常容易地实现。

考虑到这5种状态的特殊性, 译码器可以使用无延时二极管大大简化。

2015-11-24_04.30.08

加上基于RS锁存器的快速响应的单选器,一个带有五种状态切换按钮的PAPI灯就完成了。这五种状态分别是:

1)4白灯0红灯

2)3白灯1红灯

3)2白灯2红灯

4)1白灯3红灯

5)0白灯4红灯

2015-11-24_05.24.10

控制电路部分的方块代表的含义如下所示:

Grid_Pink_Wool简单译码器

Grid_Light_Gray_Wool基于RS锁存器的单选器

PAPI灯的存档下载

存档下载

本作品制作于RMC服务器,通用于1.8的所有版本和1.9所有预览版。另,记得tp到坐标0,0。可以键入下面的指令:

/tp 0 100 0
2015-11-24_05.53.03

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新手群参与讨论的各位。

【核某】机场PAPI航空灯简化版

作者:nuclear 注1:本人词穷,所以介绍非常非常少 注2:本作品搭建版本为1.7【帖内附赠1.8修复方法】 注3:DUANG主不认识我DUANG主不认识我DUANG主不认识我 ...

阅读全文

【MPVC】矩阵定位矢量炮V4-Templar

由本人Dim_Vais设计制作的第四代矩阵定位矢量炮-Templar 概述:矩阵定位矢量炮,即MPVC(全称Matrix Positioning Vector Cannon)是本人(贴吧名:滚大幕...

阅读全文

【元件库】精密时序比较器——关于时序精密描述的实现

作者:nenn(贴吧id:正正正正正好) 旧帖地址:http://tieba.baidu.com/p/3419179382   机械电路的实现往往离不开时序的实现,我们经常需要在不同的时...

阅读全文

评论已经关闭。