Icecore class

Пакет: com.hypixel.hytale.math.util

Файл: com/hypixel/hytale/math/util/TrigMathUtil.java

Поля (9)

МодификаторыТипИмя
private static final float[] ATAN2
private static final int SIZE_AC
private static final int SIZE_AR
var0
var1
double var1
double var3
double var5
float var7

Методы (4)

МодификаторыВозвратСигнатура
public static float atan2public static float atan2(float var0, float var1)
for for(int var0 = 0; var0 <= 100000; var0++)
if if(var0 < 0.0F)
if if(var1 < 0.0F)

Исходный код

Показать/скрыть
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);
         }
      }
   }
}