星空晶体 发表于 2024-9-5 22:00:53

[原创]如何用一次函数寻找Minecraft中的末地要塞

本帖最后由 星空晶体 于 2024-9-5 22:09 编辑



声明:本教程需要学过一次函数才可能大概的了解本教程讲述的什么,作者没有经过在学校学过一次函数(本人本学期学一次函数,只是还没有学到)而是本人提早预习+查阅了资料,可能会有描述错误、表述不专业等。观看此教程,请对作者有基本的尊重,不在下方楼层灌水,谢谢!





0.前言

我们在Minecraft游玩纯生存时,找到末地要塞,去末地打败末影龙,再去末地外岛找末地城/船,是绝大多数玩家的一个目标之一。但除非出生点就有末地要塞的好种子地图,一般都要跑上千格找到末地要塞。那么如何大概找到末地要塞的位置呢?


1.什么是一次函数

「一次函数」是一种简单的数学函数,图像在直角坐标系上是一条直线,其表达式一般写作y=kx+b。在其中,「k」是斜率,代表着一次函数所图像在直角坐标系的倾斜程度。「b」是一次函数图像直线的截距,代表直线与y轴交点的y坐标。


2.末影之眼的特性与直角坐标系

当玩家从手中投出末影之眼,末影之眼的飞向是向最近的末地要塞的方向,并掉落。在其中,我们可以把其飞向轨迹看做一条直线。可能会有人问,如何找到这个“直线”呢?

我们把玩家自己所在的地点看做一个点,这里叫A1。把末影之眼掉落的位置看做另一个点,这里叫A2。我们知道:通过任意两点,有且只有一条直线。把A1连接A2为一条直线。由于飞行轨迹是朝向末地要塞的,所以这条直线是朝向末地要塞的。但要塞不能只用一条直线来确定位置,它可能在直线上任意的一个点或直线附近的点

看到这里,你有没有觉得一个Minecraft整个世界,其实可以看做一个直角坐标系。其中,点的坐标可以用(x,y)表示(Minecraft中,y坐标实际上是指高度,z才是y的作用,所以(x,y)实际是(x,z)但下面内容说为(x,y))



3.确定交点


3-1:第二条直线确定交点

上面说了,单单一条直线是不能确定末地要塞位置的。于是我们可以再用一条直线,这条直线也会指向末地要塞。这两条直线都指向同一个地方,其两条直线都会经过要塞或要塞附近,所以这两条直线的交点就是末地要塞大概的位置。

我们再离开第一条直线投末影之眼的地方,大概在几百格(太远可能末影之眼指向另一个要塞,进而出现一系列错误)来到第二个地点,可以记做B1。同样是上面的办法,把落地的地点记做B2。进而连成直线
3-2:确定表达式

上面说了,一个点的坐标可以用(x,y)表示,A1、A2、B1、B2都可以的。我们知道了一个点可以用x值与y值本身,那知道连成直线的两点的xy,其一次函数表达式如何写出?

回顾一次函数的写法:y=kx+b,也就是说,只要算出斜率k与截距b就可以知道表达式长什么样了。

k斜率计算方法:(y₂-y₁)/(x₂-x₁)就是直线上任意两点的y坐标值之差与x坐标值的比
b截距计算方法:把k斜率带进y₁=kx₁+b(其中一点的xy坐标)解一下,就知道b是多少了

我们知道了k、b,套进y=kx+b,就知道了表达式

现在,你知道了一条直线的表达式,另一条直线也是如此,所以最终结果应该是下面(无例子,k,b实际上是自己已算出的,计算时自己把下面的表达式kb替换):

y=k₁x+b₁   y=k₂x+b₂

3-3:计算交点要塞坐标

两条直线的表达式知道了,怎么得出交点的坐标呢?很简单,当它们相交时,xy坐标都是一样的。若要计算共同的y,就是各表达式等号后面组成一个算式:

k₁x+b₁=k₂x+b₂

解这个一元一次方程,得出x值后任选一个表达式,把x值套进去,y就知道了。自此,我们就知道了末地要塞大概的xy坐标


4.结尾

感谢你可以看到这里,这是我第一次写中长的教程,且里面的一次函数我是没有经过学校学过的,所以描述难免会出现差错。感谢你的支持。
PS:用草稿预览一下写的教程,结果表格全乱套了,只能逐一检查哪个部分错了QWQ


作者:星空晶体

翠娥 发表于 2024-9-5 22:04:28

排版不错[贴吧_大拇指]

梦游的123444 发表于 2024-9-5 22:39:38

bilibili上都是用的三角函数。并不是他们不知道一次函数,而是三角函数更精确。计算之后还要结合游戏机制。
祝愿你能找出更好的办法。再接再厉,加油!

四个贝塔 发表于 2024-9-5 22:40:54

不错的教程,爱来自罗马!

FlashDragon 发表于 2024-9-5 23:07:12

非常好的教程。[贴吧_滑稽]
也可以用在JE的,不投JE教程有些可惜,毕竟JE分区有活动。
https://klpbbs.com/thread-133197-1-1.html

穆雪奈馋_ 发表于 2024-9-6 00:04:26

我比较懒,喜欢用要塞查询网站[贴吧_滑稽]

逍遥游世界 发表于 2024-9-6 20:11:12

理论可行,不过游戏内使用可能会有比较大的误差(有时候甚至误差成百上千格),主要是游戏内不容易得到精确坐标,解三角形可以弥补这个问题,就是非常复杂,一般情况下可能还是方向距离估算效率最高

你不会S币 发表于 2024-9-8 15:33:27

感谢分享!

mcPython 发表于 2024-9-11 12:47:34

给个代码呗[贴吧_滑稽]
页: [1]
查看完整版本: [原创]如何用一次函数寻找Minecraft中的末地要塞