末影之眼定位末地传送门之计算原理
2022-07-04 13:51:55
Minecraft

末影之眼(Eye of Ender)是一种用于定位并激活要塞里面的末地传送门的可合成物品。1 手持末影之眼并按下使用键,末影之眼会飞向最近的要塞,飞过大约 12 个方块的距离,穿过必要的方块,并在其经过的地方留下一条带有紫色粒子的痕迹。根据两次末影之眼的路径,即可推算出末地传送门的位置。在前期末影之眼缺乏的情况下,可以比较高效的寻找到末地传送门。

设两次末影之眼指向的坐标分别为P1(z1,x1,θ1)P_{1}(z_{1},x_{1},\theta_{1})P2(z2,x2,θ2)P_{2}(z_{2},x_{2},\theta_{2})

P1P_{1}且与zz轴夹角为θ1\theta_{1}的直线方程为:x=tanθ1z+x1z1tanθ1x=tan\theta_{1}z+x_{1}-z_{1}tan\theta_{1}

P2P_{2}且与zz轴夹角为θ2\theta_{2}的直线方程为:x=tanθ2z+x2z2tanθ2x=tan\theta_{2}z+x_{2}-z_{2}tan\theta_{2}

我的世界坐标系 两式联立得:

z=z1tanθ1z2tanθ2+x2x1tanθ1tanθ2z=\frac{z_{1}tan\theta_{1}-z_{2}tan\theta_{2}+x_{2}-x_{1}}{tan\theta_1-tan\theta_2}

x=tanθ1+x1z1tanθ1x=tan\theta_1+x_1-z_1tan\theta_1 或者 x=tanθ2+x2z2tanθ2x=tan\theta_2+x_2-z_2tan\theta_2

记录坐标

根据三次记录的坐标及角度,计算得到末地传送门坐标-1940, -1351

p1 = { x: -673.5, z: 29.5, degree: 137.2 };
p2 = { x: -517.646, z: -195.914, degree: 129.2 };
p3 = { x: -512.716, z: -342.93, degree: 125.1 };

averagePoint(solve([p1, p2, p3]));
// {x: -1940.025735148354, z: -1351.8912451408003}

验证(世界种子为-2858310909016843760 ),误差并不大。

验证

使用最小覆盖圆算法计算出坐标为-1930 -1340,差距也不是很大。

使用最小圆覆盖算法计算出的坐标

传送门计算器

X:
Z:
θ:

其他参考资料:

MCBBS - 两次末影之眼定位要塞,附原理&源代码&程序

Python 学习日记 1---简单的 Minecraft 末地要塞坐标计算器

参考

  1. 末影之眼 - Minecraft Wiki,最详细的我的世界百科