Riven class
Пакет: com.hypixel.hytale.math.util
Файл: com/hypixel/hytale/math/util/TrigMathUtil.java
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private static final float[] |
COS |
|
private static final float[] |
SIN |
|
private static final int |
SIN_BITS |
|
private static final int |
SIN_COUNT |
|
private static final int |
SIN_MASK |
|
private static final float |
degFull |
|
private static final float |
degToIndex |
|
private static final float |
radFull |
|
private static final float |
radToIndex |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public static float |
cospublic static float cos(float var0) |
|
|
for for(int var0 = 0; var0 < SIN_COUNT; var0++) |
|
|
for for(int var1 = 0; var1 < 360; var1 += 90) |
|
public static float |
sinpublic static float sin(float var0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.math.util;
class="kw">import javax.annotation.Nonnull;
class="kw">public class TrigMathUtil {
class="kw">public class="kw">static class="kw">final float PI = (float) Math.PI;
class="kw">public class="kw">static class="kw">final float PI_HALF = (float) (Math.PI / 2);
class="kw">public class="kw">static class="kw">final float PI_QUARTER = (float) (Math.PI / 4);
class="kw">public class="kw">static class="kw">final float PI2 = (float) (Math.PI * 2);
class="kw">public class="kw">static class="kw">final float PI4 = (float) (Math.PI * 4);
class="kw">public class="kw">static class="kw">final float radToDeg = 180.0F / (float)Math.PI;
class="kw">public class="kw">static class="kw">final float degToRad = (float) (Math.PI / 180.0);
class="kw">public class="kw">static float sin(float var0) {
class="kw">return TrigMathUtil.Riven.sin(var0);
}
class="kw">public class="kw">static float cos(float var0) {
class="kw">return TrigMathUtil.Riven.cos(var0);
}
class="kw">public class="kw">static float sin(double var0) {
class="kw">return TrigMathUtil.Riven.sin((float)var0);
}
class="kw">public class="kw">static float cos(double var0) {
class="kw">return TrigMathUtil.Riven.cos((float)var0);
}
class="kw">public class="kw">static float atan2(float var0, float var1) {
class="kw">return TrigMathUtil.Icecore.atan2(var0, var1);
}
class="kw">public class="kw">static float atan2(double var0, double var2) {
class="kw">return TrigMathUtil.Icecore.atan2((float)var0, (float)var2);
}
class="kw">public class="kw">static float atan(double var0) {
class="kw">return (float)Math.atan(var0);
}
class="kw">public class="kw">static float asin(double var0) {
class="kw">return (float)Math.asin(var0);
}
class="kw">private TrigMathUtil() {
}
class="kw">private class="kw">static class="kw">final class Icecore {
class="kw">private class="kw">static class="kw">final int SIZE_AC = 100000;
class="kw">private class="kw">static class="kw">final int SIZE_AR = 100001;
class="kw">private class="kw">static class="kw">final float[] ATAN2 = new float[100001];
class="kw">private Icecore() {
}
class="kw">public class="kw">static float atan2(float var0, float var1) {
if (var0 < 0.0F) {
if (var1 < 0.0F) {
class="kw">return var0 < var1 ? -ATAN2[(int)(var1 / var0 * 100000.0F)] - (float) (Math.PI / 2) : ATAN2[(int)(var0 / var1 * 100000.0F)] - (float) Math.PI;
}
var0 = -var0;
class="kw">return var0 > var1 ? ATAN2[(int)(var1 / var0 * 100000.0F)] - (float) (Math.PI / 2) : -ATAN2[(int)(var0 / var1 * 100000.0F)];
} else if (var1 < 0.0F) {
var1 = -var1;
class="kw">return var0 > var1 ? ATAN2[(int)(var1 / var0 * 100000.0F)] + (float) (Math.PI / 2) : -ATAN2[(int)(var0 / var1 * 100000.0F)] + (float) Math.PI;
} else {
class="kw">return var0 > var1 ? -ATAN2[(int)(var1 / var0 * 100000.0F)] + (float) (Math.PI / 2) : ATAN2[(int)(var0 / var1 * 100000.0F)];
}
}
class="kw">static {
for (int var0 = 0; var0 <= 100000; var0++) {
double var1 = var0 / 100000.0;
double var3 = 1.0;
double var5 = var3 * var1;
float var7 = (float)Math.atan2(var5, var3);
ATAN2[var0] = var7;
}
}
}
class="kw">private class="kw">static class="kw">final class Riven {
class="kw">private class="kw">static class="kw">final int SIN_BITS = 12;
class="kw">private class="kw">static class="kw">final int SIN_MASK = ~(-1 << SIN_BITS);
class="kw">private class="kw">static class="kw">final int SIN_COUNT = SIN_MASK + 1;
class="kw">private class="kw">static class="kw">final float radFull = (float) (Math.PI * 2);
class="kw">private class="kw">static class="kw">final float radToIndex = SIN_COUNT / radFull;
class="kw">private class="kw">static class="kw">final float degFull = 360.0F;
class="kw">private class="kw">static class="kw">final float degToIndex = SIN_COUNT / degFull;
@Nonnull
class="kw">private class="kw">static class="kw">final float[] SIN = new float[SIN_COUNT];
@Nonnull
class="kw">private class="kw">static class="kw">final float[] COS = new float[SIN_COUNT];
class="kw">private Riven() {
}
class="kw">public class="kw">static float sin(float var0) {
class="kw">return SIN[(int)(var0 * radToIndex) & SIN_MASK];
}
class="kw">public class="kw">static float cos(float var0) {
class="kw">return COS[(int)(var0 * radToIndex) & SIN_MASK];
}
class="kw">static {
for (int var0 = 0; var0 < SIN_COUNT; var0++) {
SIN[var0] = (float)Math.sin((var0 + 0.5F) / SIN_COUNT * radFull);
COS[var0] = (float)Math.cos((var0 + 0.5F) / SIN_COUNT * radFull);
}
for (int var1 = 0; var1 < 360; var1 += 90) {
SIN[(int)(var1 * degToIndex) & SIN_MASK] = (float)Math.sin(var1 * Math.PI / 180.0);
COS[(int)(var1 * degToIndex) & SIN_MASK] = (float)Math.cos(var1 * Math.PI / 180.0);
}
}
}
}