Nonrecursive Movement Formulas/zh: Difference between revisions

From Minecraft Parkour Wiki
Content added Content deleted
(Created page with "非递归公式")
 
(Created page with "* <math display="inline">v_0</math> 是玩家的初始速度(跳跃之前,<math>t_0</math> 时的速度) * <math display="inline">t</math> 是计入的 ticks 数(例如:平地上 t=12,参见'''跳跃持续时间''') * <math display="inline">J</math> 是“跳跃增益”(疾跑跳跃为 0.3274,斜疾跑跳跃为 0.291924,45°无疾跑跳跃为 1.0……) * <math display="inline">M</math> 是跳跃后的移动乘数(45°斜疾跑为 1.3,正常疾...")
Line 6: Line 6:
'''定义:'''
'''定义:'''


* <math display="inline">v_0</math> 是玩家的初始速度(跳跃之前,<math>t_0</math> 时的速度)
<div lang="en" dir="ltr" class="mw-content-ltr">
* <math display="inline">v_0</math> is the player's initial speed (speed on <math>t_0</math>, before jumping)
* <math display="inline">t</math> 是计入的 ticks 数(例如:平地上 t=12,参见'''跳跃持续时间''')
* <math display="inline">J</math> 是“跳跃增益”(疾跑跳跃为 0.3274,斜疾跑跳跃为 0.291924,45°无疾跑跳跃为 1.0……)
* <math display="inline">t</math> is the number of ticks considered (ex: t=12 on flat ground, see '''Jump Duration''')
* <math display="inline">J</math> is the "jump bonus" (0.3274 for sprintjump, 0.291924 for strafed sprintjump, 0.1 for 45° no-sprint jump...)
* <math display="inline">M</math> 是跳跃后的移动乘数(45°斜疾跑为 1.3,正常疾跑为 1.274,无疾跑45° 1.0……)
* <math display="inline">M</math> is the movement multiplier after jumping (1.3 for 45° sprint, 1.274 for normal sprint, 1.0 for no-sprint 45°...)
</div>






== 垂直运动(跳跃)[1.8] ==
<div lang="en" dir="ltr" class="mw-content-ltr">
== Vertical Movement (jump) [1.8] ==
</div>


跳跃后的垂直速度(<math>t \geq 6</math>)
<div lang="en" dir="ltr" class="mw-content-ltr">
Vertical speed after jumping (<math>t \geq 6</math>)
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
:<math display="inline">\textrm{V}_Y(t) = 4 \times 0.98^{t-5} - 3.92</math>
:<math display="inline">\textrm{V}_Y(t) = 4 \times 0.98^{t-5} - 3.92</math>
</div>




跳跃后的相对高度(<math>t \geq 6</math>)
<div lang="en" dir="ltr" class="mw-content-ltr">
Relative height after jumping (<math>t \geq 6</math>)
</div>


:<math display="inline">\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)</math>
<div lang="en" dir="ltr" class="mw-content-ltr">
:<math display="inline">\textrm{Y}_{rel}(t) = \underset{\textrm{jump peak}}{\underbrace{197.4 - 217 \times 0.98^5}} + 200 (0.98-0.98^{t-4}) - 3.92 (t-5)</math>
</div>




对于 <math display="inline">t<6</math> 的情况,见下文。
<div lang="en" dir="ltr" class="mw-content-ltr">
For <math display="inline">t<6</math>, see below.
</div>






== 垂直运动(跳跃)[1.9+] ==
<div lang="en" dir="ltr" class="mw-content-ltr">
== Vertical Movement (jump) [1.9+] ==
</div>


跳跃后的垂直速度(<math>t \geq 1</math>)
<div lang="en" dir="ltr" class="mw-content-ltr">
Vertical speed after jumping (<math>t \geq 1</math>)
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
:<math display="inline">\textrm{V}_Y(t) = 0.42 \times 0.98^{t-1} + 4 \times 0.98^t - 3.92</math>
:<math display="inline">\textrm{V}_Y(t) = 0.42 \times 0.98^{t-1} + 4 \times 0.98^t - 3.92</math>
</div>




跳跃后的相对高度(<math>t \geq 0</math>)
<div lang="en" dir="ltr" class="mw-content-ltr">
Relative height after jumping (<math>t \geq 0</math>)
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
:<math display="inline">\textrm{Y}_{rel}(t) = 217 \times (1 - 0.98^t) - 3.92 t</math>
:<math display="inline">\textrm{Y}_{rel}(t) = 217 \times (1 - 0.98^t) - 3.92 t</math>
</div>




Line 72: Line 48:
</div>
</div>


假设玩家在跳跃前已经在空中。
<div lang="en" dir="ltr" class="mw-content-ltr">
Assuming the player was airborne before jumping.
</div>


疾跑跳跃后的水平速度(<math>t \geq 2</math>)
<div lang="en" dir="ltr" class="mw-content-ltr">
Horizontal speed after sprintjumping (<math>t \geq 2</math>)
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
:<math display="inline">\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 )</math>
:<math display="inline">\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 )</math>
</div>




疾跑跳跃距离(<math>t \geq 2</math>
<div lang="en" dir="ltr" class="mw-content-ltr">
Sprintjump distance (<math>t \geq 2</math>)
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">

Revision as of 03:27, 29 January 2022

Other languages:

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


定义:

  • 是玩家的初始速度(跳跃之前, 时的速度)
  • 是计入的 ticks 数(例如:平地上 t=12,参见跳跃持续时间
  • 是“跳跃增益”(疾跑跳跃为 0.3274,斜疾跑跳跃为 0.291924,45°无疾跑跳跃为 1.0……)
  • 是跳跃后的移动乘数(45°斜疾跑为 1.3,正常疾跑为 1.274,无疾跑45°为 1.0……)


垂直运动(跳跃)[1.8]

跳跃后的垂直速度(


跳跃后的相对高度(

Failed to parse (SVG (MathML can be enabled via browser plugin): Invalid response ("Math extension cannot connect to Restbase.") from server "https://wikimedia.org/api/rest_v1/":): {\textstyle \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)}


对于 的情况,见下文。


垂直运动(跳跃)[1.9+]

跳跃后的垂直速度(


跳跃后的相对高度(



Horizontal Movement (instant jump)

假设玩家在跳跃前已经在空中。

疾跑跳跃后的水平速度(


疾跑跳跃距离(


Note: These formulas are accurate for most values of , but some negative values can wind up activating the speed threshold and reset the player's speed at some point, thus rendering these formulas inaccurate.


Horizontal Movement (delayed jump)

Assuming the player is on ground before jumping (at least 1 tick since landing).

Horizontal speed after sprintjumping ()


Sprintjump distance ()



Advanced Formulas

Horizontal speed after consecutive sprintjumps on a momentum of period (, ).

If the first sprintjump is delayed, multiply by 0.6