Angles: Difference between revisions

From Minecraft Parkour Wiki
Content added Content deleted
No edit summary
mNo edit summary
Line 13: Line 13:


'''Sin() and Cos() source code''' (from [[SourceCode:MathHelper|MathHelper]]):<syntaxhighlight lang="java">
'''Sin() and Cos() source code''' (from [[SourceCode:MathHelper|MathHelper]]):<syntaxhighlight lang="java">
private static final float[] SIN_TABLE = new float[65536];
public class MathHelper
{
private static final float[] SIN_TABLE = new float[65536];




public static float sin(float value)
public static float sin(float value)
{
{
return SIN_TABLE[(int)(value * 10430.378F) & 65535];
return SIN_TABLE[(int)(value * 10430.378F) & 65535];
}
}


public static float cos(float value)
public static float cos(float value)
{
{
return SIN_TABLE[(int)(value * 10430.378F + 16384.0F) & 65535];
return SIN_TABLE[(int)(value * 10430.378F + 16384.0F) & 65535];
}
}




static
static
{
for (int i = 0; i < 65536; ++i)
{
{
for (int i = 0; i < 65536; ++i)
SIN_TABLE[i] = (float)Math.sin((double)i * Math.PI * 2.0D / 65536.0D);
{
SIN_TABLE[i] = (float)Math.sin((double)i * Math.PI * 2.0D / 65536.0D);
}
}
}
}
}
Line 51: Line 48:
* Negative half-angles decrease the Player's speed. They can be found (abundantly) in the South-East quadrant (-90° to 0°).
* Negative half-angles decrease the Player's speed. They can be found (abundantly) in the South-East quadrant (-90° to 0°).


<br />[[File:Half angle visualized.png|none|thumb|582x582px|Two consecutive angles (30237 and 30238) and a positive half angle in between.]]
The best half-angle is 135.0055° (combined with 45° Strafe)<br />[[File:Half angle visualized.png|none|thumb|582x582px|Two consecutive angles (30237 and 30238) and a positive half angle in between.]]


'''Note:''' Fast Math is an Optifine feature that reduces the number of angles to 4096 ( <math>2^{12}</math>). With Fast Math, half angles are fewer in number, but are up to 16x more effective. For example, it makes a [https://youtu.be/19CNqn5r95o no-sprint 3b] jump possible with only flat momentum.
'''Note:''' Fast Math is an Optifine feature that reduces the number of angles to 4096 ( <math>2^{12}</math>). With Fast Math, half angles are fewer in number, but are up to 16x more effective. For example, it makes a [https://youtu.be/19CNqn5r95o no-sprint 3b] jump possible with only flat momentum.

Revision as of 20:03, 22 February 2020

The Player's yaw (facing) is a float (from to )

An angle is an integer (from to )


Angles and Half Angles

Minecraft uses angles for movement calculations, which means the Player's yaw has to be converted before being used.

This conversion induces some imprecision, as information is lost when casting a float to an int.

This also means two close (but different) facings can result in the same angle being used (a single angle spans across ~Failed to parse (syntax error): {\displaystyle 0.0055°} ).


Sin() and Cos() source code (from MathHelper):

private static final float[] SIN_TABLE = new float[65536];


public static float sin(float value)
{
    return SIN_TABLE[(int)(value * 10430.378F) & 65535];
}

public static float cos(float value)
{
    return SIN_TABLE[(int)(value * 10430.378F + 16384.0F) & 65535];
}


static
{
    for (int i = 0; i < 65536; ++i)
    {
        SIN_TABLE[i] = (float)Math.sin((double)i * Math.PI * 2.0D / 65536.0D);
    }
}

Note: & 65535 is the same as % 65536, which is the remainder of a division by 65536 ( )


By analyzing the sin() and cos() function from the source code, we can notice that the yaw-to-angle conversion is not exactly the same for both functions.

Because floats are rather imprecise for larger values, this means the same value could potentially be converted differently.


Half angles are such values, and can found between consecutive angles (hence the name).

Half angles don't have much use outside of Tool-Assisted Parkour: their effect on jump distance is negligible (±0.0001 for Tier 0), and they can hardly be reached with mouse movement.

  • Positive half-angles increase the Player's speed. They can be found (rarely) in the North-West quadrant (90° to 180°)
  • Negative half-angles decrease the Player's speed. They can be found (abundantly) in the South-East quadrant (-90° to 0°).

The best half-angle is 135.0055° (combined with 45° Strafe)

Two consecutive angles (30237 and 30238) and a positive half angle in between.

Note: Fast Math is an Optifine feature that reduces the number of angles to 4096 ( ). With Fast Math, half angles are fewer in number, but are up to 16x more effective. For example, it makes a no-sprint 3b jump possible with only flat momentum.