package net.optifine.util; import net.minecraft.util.MathHelper; public class MathUtils { public static final float PI = (float) Math.PI; public static final float PI2 = ((float) Math.PI * 2F); public static final float PId2 = ((float) Math.PI / 2F); // private static final float[] ASIN_TABLE = new float[65536]; // // public static float asin(float value) { // return ASIN_TABLE[(int) ((double) (value + 1.0F) * 32767.5D) & 65535]; // } // // public static float acos(float value) { // return ((float) Math.PI / 2F) - ASIN_TABLE[(int) ((double) (value + 1.0F) * 32767.5D) & 65535]; // } public static int getAverage(int[] vals) { if (vals.length <= 0) { return 0; } else { int i = getSum(vals); int j = i / vals.length; return j; } } public static int getSum(int[] vals) { if (vals.length <= 0) { return 0; } else { int i = 0; for (int j = 0; j < vals.length; ++j) { int k = vals[j]; i += k; } return i; } } public static int roundDownToPowerOfTwo(int val) { int i = MathHelper.roundUpToPowerOfTwo(val); return val == i ? i : i / 2; } public static boolean equalsDelta(float f1, float f2, float delta) { return Math.abs(f1 - f2) <= delta; } public static float toDeg(float angle) { return angle * 180.0F / PI; } public static float toRad(float angle) { return angle / 180.0F * PI; } public static float roundToFloat(double d) { return (float) ((double) Math.round(d * 1.0E8D) / 1.0E8D); } // static { // for (int i = 0; i < 65536; ++i) { // ASIN_TABLE[i] = (float) Math.asin((double) i / 32767.5D - 1.0D); // } // // for (int j = -1; j < 2; ++j) { // ASIN_TABLE[(int) (((double) j + 1.0D) * 32767.5D) & 65535] = (float) Math.asin((double) j); // } // } }