Angles/zh

本文是鼠标运动的延续，着重介绍三角函数在Minecraft中的工作原理.

玩家的偏航角是一个浮点数，用于跟踪玩家的水平旋转（以度为单位）. 它是无限的.

玩家的朝向是将偏航角限制在[-180°, 180°]，如F3所示.

有效角，或者简单地说，角度是一个整数 （从 $0$ 到 $2^{16}-1$ ）.

有效角
Minecraft 的三角函数依赖于有效角，即玩家的偏航角必须转换为一个角度.

这种转换将导致不精确：一个有效角跨越 ~$$0.0055°$$).

Sin and Cos 原代码 (来自MathHelper): Note:  给出除以 65536 的（正）余数（$$2^{16}$$）

为了将玩家的偏航转换为弧度(当调用sin和cos时)，游戏会使用这两个公式： 两者都有相同的目的，但对于较大的值，结果可能不同.

在这种情况下，短跑跳跃将玩家稍微向一侧移动，这对于无转弯策略可能很有用.

半角
和  应该相隔 16384 个单位（90°），但由于浮点不精确，某些值可能会进一步相差 1 个或更多个单位，从而导致与预期计算的轻微偏移.

半角 就是这样的值，可以在连续角的“中间”找到（因此得名）.

半角的存在完全是由于括号内的“+ 16384”.

半角在工具辅助跑酷之外没有太大用处：它们对跳跃距离的影响很小，并且它们几乎无法用于实时鼠标移动.

每个半角都有一个相关的乘数，代表其效益.

它对应于从 cos(f) 和 sin(f) 获得的单位向量的范数.

从数学上讲，它应该始终等于 1，但这在这种情况下并不成立.


 * “递增”半角的范数大于 1：它们会增加移动速度.
 * “递减”半角的范数小于 1：它们会降低移动速度.

$\left \|\vec{v}\right \|=\sqrt{\cos(f)^{2}+\sin(f)^{2}}$

当与给定的跳跃距离相乘时，它以其对应的半角给出了改进跳跃距离的上限.

有用的半角列表

大半角
2021年7月27日，凯米兹发现，当使用Optifine Fast Math（一种将有效角数量减少到4096个的功能）时， 某些偏航角会提供更高的速度. 事实上，这并不是快速运算所特有的，很快人们就发现了原版的“大半角”.

大半角更有效，因为在该范围内可以使用的精度浮点数较少：角度最多可以移动 64 个单位，而不是移动一个单位.

例如，偏航角为5898195°时的乘数为1.003，这与小半角(135.0055°的乘数为1.00005)相比是巨大的. 这个半角是目前最有效的存在，并使[https://youtu.be/bQfl2Lleafw 2.125bm 4+0.5]之类的跳跃成为可能.

要达到如此高的数值，可能需要使用宏或mod，因为手动旋转需要花费太长时间.

通过快速运算，半角被进一步放大，球员可以在偏航角小于$$360 \times 2^{19}$$运动，而在原版中只能在 $$360 \times 2^{15}$$内运动.

例如，偏航121000000°的乘数是1.09，这是如此可笑，它使平地连跳五远成为可能. 这个机制不应该被认为是官方的，因为它依赖于一个mod，并且在服务器上使用这个漏洞可能是未经授权的(即使是Optifine).

新版本的 Optifine 改变了快速运算的效果，消除了很多 FM 半角（自2019年12月发布的U L5版本以来）.

特征
减速的半角在-90°和0°之间很常见，因为负浮点数向上截断，而正浮点数向下截断

在0°和90°之间很少存在减速的半角.

加速的半角很少出现在90°和180°之间.

大半角的形式为$$360 \times 2^n - \theta$$，其中 $$\theta \in [0,90]$$ 以及 $$n \in \{0, ... ,14\}$$. 它们都在增加直到$$n \geq 8$$，此时它们可能会增加或减少.