RootSolver class

Пакет: com.hypixel.hytale.server.npc.util

Файл: com/hypixel/hytale/server/npc/util/RootSolver.java

Поля (58)

МодификаторыТипИмя
final double M_PI
double var10
int var10
var10
var10
var10
var10
double var11
double var11
double var12
double var13
double var13
double var14
double var15
double var15
double var17
double var17
double var19
double var19
double var21
double var21
var21
var21
double var23
double var23
var23
var23
double var25
double var25
double var27
double var27
double var29
double var29
double var31
double var31
double var33
double var33
double var35
double var35
double var36
double var37
double var37
double var39
double var41
int var44
var44
var44
double var45
var45
var45
double var48
var48
var48
double var51
var51
var51
double var54
double var8

Методы (9)

МодификаторыВозвратСигнатура
static double cubicRootdouble cubicRoot(double var0)
for for(int var9 = 0; var9 < var10; var9++)
for for(int var43 = 0; var43 < var44; var43++)
if if(var12 < 0.0)
static boolean isZeroboolean isZero(double var0)
static int solveCubicint solveCubic(double var0, double var2, double var4, double var6, double[] var8)
abstract solveCubic solveCubic(var54, var51, var48, var45, var10)
static int solveQuadricint solveQuadric(double var0, double var2, double var4, double[] var6, int var7)
static int solveQuarticint solveQuartic(double var0, double var2, double var4, double var6, double var8, double[] var10)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.util;

class="kw">public class RootSolver {
   class="kw">public class="kw">static class="kw">final double M_PI = Math.PI;
   class="kw">public class="kw">static class="kw">final double EQN_EPS = 1.0E-15;

   class="kw">public RootSolver() {
   }

   class="kw">protected class="kw">static boolean isZero(double var0) {
      class="kw">return var0 > -1.0E-15 && var0 < 1.0E-15;
   }

   class="kw">protected class="kw">static double cubicRoot(double var0) {
      class="kw">return var0 > 0.0 ? Math.pow(var0, 0.3333333333333333) : (var0 < 0.0 ? -Math.pow(-var0, 0.3333333333333333) : 0.0);
   }

   class="kw">public class="kw">static int solveQuadric(double var0, double var2, double var4, double[] var6, int var7) {
      double var8 = var2 / (2.0 * var0);
      double var10 = var4 / var0;
      double var12 = var8 * var8 - var10;
      if (isZero(var12)) {
         var6[var7] = -var8;
         class="kw">return 1;
      }

      if (var12 < 0.0) {
         class="kw">return 0;
      }

      double var14 = Math.sqrt(var12);
      var6[var7] = var14 - var8;
      var6[var7 + 1] = -var14 - var8;
      class="kw">return 2;
   }

   class="kw">public class="kw">static int solveCubic(double var0, double var2, double var4, double var6, double[] var8) {
      double var13 = var2 / var0;
      double var15 = var4 / var0;
      double var17 = var6 / var0;
      double var19 = var13 * var13;
      double var21 = 0.3333333333333333 * (-0.3333333333333333 * var19 + var15);
      double var23 = 0.5 * (0.07407407407407407 * var13 * var19 - 0.3333333333333333 * var13 * var15 + var17);
      double var25 = var21 * var21 * var21;
      double var27 = var23 * var23 + var25;
      int var10;
      if (isZero(var27)) {
         if (isZero(var23)) {
            var8[0] = 0.0;
            var10 = 1;
         } else {
            double var29 = cubicRoot(-var23);
            var8[0] = 2.0 * var29;
            var8[1] = -var29;
            var10 = 2;
         }
      } else if (var27 < 0.0) {
         double var35 = 0.3333333333333333 * Math.acos(-var23 / Math.sqrt(-var25));
         double var31 = 2.0 * Math.sqrt(-var21);
         var8[0] = var31 * Math.cos(var35);
         var8[1] = -var31 * Math.cos(var35 + (Math.PI / 3));
         var8[2] = -var31 * Math.cos(var35 - (Math.PI / 3));
         var10 = 3;
      } else {
         double var36 = Math.sqrt(var27);
         double var37 = cubicRoot(var36 - var23);
         double var33 = -cubicRoot(var36 + var23);
         var8[0] = var37 + var33;
         var10 = 1;
      }

      double var11 = 0.3333333333333333 * var13;

      for (int var9 = 0; var9 < var10; var9++) {
         var8[var9] -= var11;
      }

      class="kw">return var10;
   }

   class="kw">public class="kw">static int solveQuartic(double var0, double var2, double var4, double var6, double var8, double[] var10) {
      double var27 = var2 / var0;
      double var29 = var4 / var0;
      double var31 = var6 / var0;
      double var33 = var8 / var0;
      double var35 = var27 * var27;
      double var37 = -0.375 * var35 + var29;
      double var39 = 0.125 * var35 * var27 - 0.5 * var27 * var29 + var31;
      double var41 = -0.01171875 * var35 * var35 + 0.0625 * var35 * var29 - 0.25 * var27 * var31 + var33;
      int var44;
      if (isZero(var41)) {
         double var11 = var39;
         double var13 = var37;
         double var15 = 0.0;
         double var17 = 1.0;
         var44 = solveCubic(var17, var15, var13, var11, var10);
         var10[var44++] = 0.0;
      } else {
         double var45 = 0.5 * var41 * var37 - 0.125 * var39 * var39;
         double var48 = -var41;
         double var51 = -0.5 * var37;
         double var54 = 1.0;
         solveCubic(var54, var51, var48, var45, var10);
         double var19 = var10[0];
         double var21 = var19 * var19 - var41;
         double var23 = 2.0 * var19 - var37;
         if (isZero(var21)) {
            var21 = 0.0;
         } else {
            if (!(var21 > 0.0)) {
               class="kw">return 0;
            }

            var21 = Math.sqrt(var21);
         }

         if (isZero(var23)) {
            var23 = 0.0;
         } else {
            if (!(var23 > 0.0)) {
               class="kw">return 0;
            }

            var23 = Math.sqrt(var23);
         }

         var45 = var19 - var21;
         var48 = var39 < 0.0 ? -var23 : var23;
         var51 = 1.0;
         var44 = solveQuadric(var51, var48, var45, var10, 0);
         var45 = var19 + var21;
         var48 = var39 < 0.0 ? var23 : -var23;
         var51 = 1.0;
         var44 += solveQuadric(var51, var48, var45, var10, var44);
      }

      double var25 = 0.25 * var27;

      for (int var43 = 0; var43 < var44; var43++) {
         var10[var43] -= var25;
      }

      class="kw">return var44;
   }
}