Nonrecursive Movement Formulas/zh

由于算术几何序列有明确的公式，我们可以建立非递归函数来计算简单但有用的结果，例如在任一 tick 上玩家的高度，或者在初始速度与持续时间的基础上计算跳跃的距离.

定义：


 * $v_0$ 是玩家的初始速度（跳跃之前，$$t_0$$ 时的速度）
 * $t$ 是计入的 ticks 数（例如：平地上 t=12，参见跳跃持续时间）
 * $J$ 是“跳跃增益”（疾跑跳跃为 0.3274，斜疾跑跳跃为 0.291924，45°无疾跑跳跃为 1.0……）
 * $M$ 是跳跃后的移动乘数（45°斜疾跑为 1.3，正常疾跑为 1.274，无疾跑45°为 1.0……）

垂直运动（跳跃）[1.8]
跳跃后的垂直速度（$$t \geq 6$$）


 * $\textrm{V}_Y(t) = 4 \times 0.98^{t-5} - 3.92$

跳跃后的相对高度（$$t \geq 6$$）


 * $\textrm{Y}_{rel}(t) = \underset{\textrm{跳 跃 最 高 点}}{\underbrace{197.4 - 217 \times 0.98^5}} + 200 (0.98-0.98^{t-4}) - 3.92 (t-5)$

对于 $t<6$ 的情况，见下文.

垂直运动（跳跃）[1.9+]
跳跃后的垂直速度（$$t \geq 1$$）


 * $\textrm{V}_Y(t) = 0.42 \times 0.98^{t-1} + 4 \times 0.98^t - 3.92$

跳跃后的相对高度（$$t \geq 0$$）


 * $\textrm{Y}_{rel}(t) = 217 \times (1 - 0.98^t) - 3.92 t$

水平运动（落地跳跃）
假设玩家在跳跃前已经在空中.

疾跑跳跃后的水平速度（$$t \geq 2$$）


 * $\textrm{V}_H(v_0,t) = \frac{0.02 M}{0.09} + 0.6 \times 0.91^t \times \left ( v_0 + \frac{J}{0.91} - \frac{0.02 M}{0.6 \times 0.91 \times 0.09} \right )$

疾跑跳跃距离（$$t \geq 2$$）


 * $\textrm{Dist}(v_0,t) = 1.91 v_0 + J + \frac{0.02 M}{0.09} (t-2) + \frac{0.6 \times 0.91^2}{0.09} \times (1 - 0.91^{t-2}) \times \left ( v_0 + \frac{J}{0.91} - \frac{0.02 M}{0.6 \times 0.91 \times 0.09} \right )$

注意：这些公式对于大多数 $$v_0$$ 的值来说都是准确的，但是一些负值会在某个时间点触发速度阈值并重置玩家速度，从而使这些公式不准确.

水平运动（延后跳跃）
假设玩家在跳跃前已经落地（至少在落地后的 1 tick 起跳）

疾跑跳跃的水平速度（$$t \geq 2$$）


 * $\textrm{V}^*_H(v_0,t) = \frac{0.02 M}{0.09} + 0.6 \times 0.91^t \times \left ( 0.6 v_0 + \frac{J}{0.91} - \frac{0.02 M}{0.6 \times 0.91 \times 0.09} \right )$

疾跑跳跃距离（$$t \geq 2$$）


 * $\textrm{Dist}^*(v_0,t) = 1.546 v_0 + J + \frac{0.02 M}{0.09} (t-2) + \frac{0.6 \times 0.91^2}{0.09} \times (1 - 0.91^{t-2}) \times \left ( 0.6v_0 + \frac{J}{0.91} - \frac{0.02 M}{0.6 \times 0.91 \times 0.09} \right )$

进阶公式
在周期为 $T$ 的助跑上连续疾跑跳跃 $$n$$ 次后的水平速度（$$n \geq 0$$，$$T \geq 2$$）.


 * $\textrm{V}^{\,n}_H(v_0,T,n) = \left ( 0.6 \times 0.91^T \right )^n v_0 + \left ( 0.6 \times 0.91^{T-1} J + 0.02M \frac{1 - 0.91^{T-1}}{0.09} \right ) \frac{1- (0.6 \times 0.91^T)^n}{1 - 0.6 \times 0.91^T} $

如果第一次疾跑跳跃延后，则 $v_0$ 乘以 0.6.