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;
}
}