[原创]如何用一次函数寻找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
作者:星空晶体 排版不错[贴吧_大拇指] bilibili上都是用的三角函数。并不是他们不知道一次函数,而是三角函数更精确。计算之后还要结合游戏机制。
祝愿你能找出更好的办法。再接再厉,加油! 不错的教程,爱来自罗马! 非常好的教程。[贴吧_滑稽]
也可以用在JE的,不投JE教程有些可惜,毕竟JE分区有活动。
https://klpbbs.com/thread-133197-1-1.html 我比较懒,喜欢用要塞查询网站[贴吧_滑稽] 理论可行,不过游戏内使用可能会有比较大的误差(有时候甚至误差成百上千格),主要是游戏内不容易得到精确坐标,解三角形可以弥补这个问题,就是非常复杂,一般情况下可能还是方向距离估算效率最高 感谢分享! 给个代码呗[贴吧_滑稽]
页: [1]