天才一秒记住【第一中文网】地址:www.dyzww.cc
(本章于2022年7月18日重写)
(建议阅读本章的读者需具备一定的空间想象能力,并预先准备好笔和草稿纸,或一个3d画图软件)
本章以及接下来两章原本是讲execute的条件子命令和存储子命令的,结果本书第一次大修中这些内容在前面几章讲完了,这几章就空出来。
所以这一章,我们就来研究一下:局部坐标与执行朝向的关系。
在第五十九章『更深入地了解坐标』中,我们了解到局部坐标是以执行者的头为原点,但其实这个观点是完全错误的。要想纠正这个错误,我们就得了解到局部坐标的本质。
局部坐标的本质是什么呢?简单来说,局部坐标就是一种基于相对坐标并受执行朝向影响的一种坐标。局部坐标的原点在相对坐标的基础上计算而成,三个坐标轴根据执行朝向不断改变其倾斜角度。
为了能够更好理解局部坐标的本质,我们可以以执行地点为圆心o,任意实数r为半径,画一个处于水平面上的圆,这个圆我们可以称之为『水平朝向圆』,用来代表水平旋转角度。然后,我们再以同样的点o为圆心,同样的r为半径,画一个和绝对y、z坐标轴处于相同平面上的圆,这个圆我们可以称之为『垂直朝向圆』,用来代表垂直旋转角度。
画出来后,我们就会发现这两个圆组成了一个球体,这个球体我们可以称之为『朝向球』。(注:这些名词都是作者自己编的)
在这个『朝向球』中,『水平旋转圆』和『垂直旋转圆』的边有两个交点,这两个交点就分别代表着(180°,0°)和(0°,0°)这两个特殊的旋转角度。由于这两个交点所代表的旋转角度很特殊,我们就将这个『朝向球』称之为『标准朝向球』,意指这个朝向球代表着标准的、默认的朝向。
在minecraft中,命令方块执行指令时,它的朝向球就是这样子的,因为本身其没有朝向,所以默认采用『水平朝向正南』的朝向来执行指令。
但是在玩家身上呢?甚至在其他实体身上呢?由于实体的朝向会不断改变且不标准,所以每个实体朝向球内的『水平朝向圆』和『垂直朝向圆』并不一定处于水平面和绝对yz坐标的平面上,而是有一个偏差的角度。
比如说这位玩家,他的水平旋转角度为76°(南偏西76°),垂直旋转角度为-27°(水平向上27°)。我们以这位玩家的位置作为圆心o,以任意实数r为半径,画出的『水平朝向圆』所在的平面和水平面的夹角为27°,画出的『垂直朝向圆』所在的平面和绝对yz坐标轴所在的平面的夹角为76°(或104°)。
不难发现,在这种不标准的朝向球中,『水平朝向圆』倾斜的角度是由『垂直旋转角度』决定的,而『垂直朝向圆』偏差的角度是由『水平旋转角度』决定的,两者是互相影响的关系。
如果你读懂了上面的内容,那么恭喜你,我们现在可以尝试加点儿料来切入主题了。如果你没有读懂,也没事,画点图,或者搜一搜和上述概念很类似的『天球』,了解了解,你大概也就懂了。
我们还是以刚才那位玩家的朝向球为基础,你会发现在这个朝向球中也有两个交点,分别代表着(76°,-27°)和(-104°,27°)的朝向,前者是玩家正面的朝向,后者是玩家背面的朝向。我们设前者为A点,后者为b点,过Ab点作直线Ab,这条直线Ab必定会过圆心o点。
现在,我们把这条直线Ab当作是一个原点是o的坐标轴,向A点方向为正方向,向b点方向为反方向。这条坐标轴是什么呢?就是这名玩家局部坐标的z坐标轴!
然后,我们隐藏掉『垂直朝向圆』,只看『水平朝向圆』和z坐标轴
本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!