HyperSimplex class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.noise

Файл: com/hypixel/hytale/builtin/hytalegenerator/noise/HyperSimplex.java

Поля (41)

МодификаторыТипИмя
final double F2
ROTATION_ORDER
int var1
var1
double var10
var10
int var10
double var11
double var12
var12
int var13
int var14
int var14
double var15
double var15
int var17
int var18
int var19
double var20
int var3
var3
var3
var3
var3
var3
var3
double var4
long var4
double var5
double var6
double var6
var6
double var7
double var7
var7
double var8
var8
double var8
var8
double var9
var9

Методы (8)

МодификаторыВозвратСигнатура
static double fadedouble fade(int var0, double var1, double var3, double var5)
static double fadedouble fade(int var0, double var1, double var3)
for for(int var0 = 0; var0 < 256; var0++)
for for(int var2 = 0; var2 < 8; var2++)
static int getPermint getPerm(int var0, int var1, int var2)
static int getPermint getPerm(int var0, int var1)
static double noisedouble noise(double var0, double var2, double var4)
static double noisedouble noise(double var0, double var2)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.noise;

class="kw">import javax.annotation.Nonnull;

class="kw">public class HyperSimplex {
   class="kw">private class="kw">static class="kw">final double F2 = 0.5 * (Math.sqrt(3.0) - 1.0);
   class="kw">private class="kw">static class="kw">final double G2 = (3.0 - Math.sqrt(3.0)) / 6.0;
   class="kw">private class="kw">static class="kw">final double F3 = 0.3333333333333333;
   class="kw">private class="kw">static class="kw">final double G3 = 0.16666666666666666;
   class="kw">private class="kw">static class="kw">final double G3_shift = -0.5;
   class="kw">private class="kw">static class="kw">final short[] p = new short[]{
      151,
      160,
      137,
      91,
      90,
      15,
      131,
      13,
      201,
      95,
      96,
      53,
      194,
      233,
      7,
      225,
      140,
      36,
      103,
      30,
      69,
      142,
      8,
      99,
      37,
      240,
      21,
      10,
      23,
      190,
      6,
      148,
      247,
      120,
      234,
      75,
      0,
      26,
      197,
      62,
      94,
      252,
      219,
      203,
      117,
      35,
      11,
      32,
      57,
      177,
      33,
      88,
      237,
      149,
      56,
      87,
      174,
      20,
      125,
      136,
      171,
      168,
      68,
      175,
      74,
      165,
      71,
      134,
      139,
      48,
      27,
      166,
      77,
      146,
      158,
      231,
      83,
      111,
      229,
      122,
      60,
      211,
      133,
      230,
      220,
      105,
      92,
      41,
      55,
      46,
      245,
      40,
      244,
      102,
      143,
      54,
      65,
      25,
      63,
      161,
      1,
      216,
      80,
      73,
      209,
      76,
      132,
      187,
      208,
      89,
      18,
      169,
      200,
      196,
      135,
      130,
      116,
      188,
      159,
      86,
      164,
      100,
      109,
      198,
      173,
      186,
      3,
      64,
      52,
      217,
      226,
      250,
      124,
      123,
      5,
      202,
      38,
      147,
      118,
      126,
      255,
      82,
      85,
      212,
      207,
      206,
      59,
      227,
      47,
      16,
      58,
      17,
      182,
      189,
      28,
      42,
      223,
      183,
      170,
      213,
      119,
      248,
      152,
      2,
      44,
      154,
      163,
      70,
      221,
      153,
      101,
      155,
      167,
      43,
      172,
      9,
      129,
      22,
      39,
      253,
      19,
      98,
      108,
      110,
      79,
      113,
      224,
      232,
      178,
      185,
      112,
      104,
      218,
      246,
      97,
      228,
      251,
      34,
      242,
      193,
      238,
      210,
      144,
      12,
      191,
      179,
      162,
      241,
      81,
      51,
      145,
      235,
      249,
      14,
      239,
      107,
      49,
      192,
      214,
      31,
      181,
      199,
      106,
      157,
      184,
      84,
      204,
      176,
      115,
      121,
      50,
      45,
      127,
      4,
      150,
      254,
      138,
      236,
      205,
      93,
      222,
      114,
      67,
      29,
      24,
      72,
      243,
      141,
      128,
      195,
      78,
      66,
      215,
      61,
      156,
      180
   };
   class="kw">private class="kw">static class="kw">final byte[] gradient = new byte[]{
      1, 1, 0, -1, 1, 0, 1, -1, 0, -1, -1, 0, 1, 0, 1, -1, 0, 1, 1, 0, -1, -1, 0, -1, 0, 1, 1, 0, -1, 1, 0, 1, -1, 0, -1, -1
   };
   class="kw">private class="kw">static class="kw">final long ROTATION_ORDER;
   @Nonnull
   class="kw">static class="kw">final byte[] small_perm = new byte[256];
   @Nonnull
   class="kw">static class="kw">final double[] small_permMod12 = new double[1024];

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

   class="kw">private class="kw">static int getPerm(int var0, int var1, int var2) {
      class="kw">return (var0 + Byte.toUnsignedInt(small_perm[var1 + Byte.toUnsignedInt(small_perm[var2 & 0xFF]) & 0xFF]) & 0xFF) * 3;
   }

   class="kw">private class="kw">static double fade(int var0, double var1, double var3, double var5) {
      double var7 = Math.fma(var1, small_permMod12[var0 + 2], Math.fma(var3, small_permMod12[var0 + 1], var5 * small_permMod12[var0]));
      double var9 = -Math.fma(var1, var1, Math.fma(var3, var3, Math.fma(var5, var5, -0.6)));
      var9 = Math.max(0.0, var9);
      var9 *= var9;
      var9 *= var9;
      class="kw">return var9 * var7;
   }

   class="kw">public class="kw">static double noise(double var0, double var2, double var4) {
      double var6 = (var0 + var2 + var4) * 0.3333333333333333;
      double var8 = Math.floor(var0 + var6);
      var0 -= var8;
      double var10 = Math.floor(var2 + var6);
      var2 -= var10;
      double var12 = Math.floor(var4 + var6);
      var4 -= var12;
      int var14 = (int)(ROTATION_ORDER >> ((var0 >= var2 ? 1 : 0) | (var2 >= var4 ? 2 : 0) | (var0 >= var4 ? 4 : 0)) * 6 & 63L);
      double var15 = (var8 + var10 + var12) * 0.16666666666666666;
      int var17 = (int)var8;
      int var18 = (int)var10;
      int var19 = (int)var12;
      var8 = var0 + var15;
      var10 = var2 + var15;
      var12 = var4 + var15;
      double var20 = fade(getPerm(var17, var18, var19), var8, var10, var12);
      var20 += fade(getPerm(var17 + 1, var18 + 1, var19 + 1), var8 + -0.5, var10 + -0.5, var12 + -0.5);
      var20 += fade(
         getPerm(var17 + (var14 & 1), var18 + (var14 >> 1 & 1), var19 + (var14 >> 2 & 1)),
         var8 + 0.16666666666666666 - (var14 & 1),
         var10 + 0.16666666666666666 - (var14 >> 1 & 1),
         var12 + 0.16666666666666666 - (var14 >> 2 & 1)
      );
      var20 += fade(
         getPerm(var17 + (var14 >> 3 & 1), var18 + (var14 >> 4 & 1), var19 + (var14 >> 5 & 1)),
         var8 + 0.3333333333333333 - (var14 >> 3 & 1),
         var10 + 0.3333333333333333 - (var14 >> 4 & 1),
         var12 + 0.3333333333333333 - (var14 >> 5 & 1)
      );
      class="kw">return 32.0 * var20;
   }

   class="kw">private class="kw">static int getPerm(int var0, int var1) {
      class="kw">return (var0 + Byte.toUnsignedInt(small_perm[var1 & 0xFF]) & 0xFF) * 3;
   }

   class="kw">private class="kw">static double fade(int var0, double var1, double var3) {
      double var5 = Math.fma(var1, small_permMod12[var0 + 2], var3 * small_permMod12[var0 + 1]);
      double var7 = -Math.fma(var1, var1, Math.fma(var3, var3, -0.5));
      var7 = Math.max(0.0, var7);
      var7 *= var7;
      var7 *= var7;
      class="kw">return var7 * var5;
   }

   class="kw">public class="kw">static double noise(double var0, double var2) {
      double var4 = (var0 + var2) * F2;
      double var6 = Math.floor(var0 + var4);
      var0 -= var6;
      double var8 = Math.floor(var2 + var4);
      var2 -= var8;
      int var10 = var0 > var2 ? 1 : 0;
      double var11 = (var6 + var8) * G2;
      int var13 = (int)var6;
      int var14 = (int)var8;
      var6 = var0 + var11;
      var8 = var2 + var11;
      double var15 = fade(getPerm(var13, var14), var6, var8);
      var15 += fade(getPerm(var13 + 1, var14 + 1), var6 + (2.0 * G2 - 1.0), var8 + (2.0 * G2 - 1.0));
      var15 += fade(getPerm(var13 + var10, var14 + (1 - var10)), var6 + G2 - var10, var8 + G2 - (1 - var10));
      class="kw">return 70.0 * var15;
   }

   class="kw">static {
      for (int var0 = 0; var0 < 256; var0++) {
         int var1;
         small_perm[var0] = (byte)(var1 = p[var0]);
         var1 = var1 % 12 * 3;
         small_permMod12[var0 * 3 + 2] = gradient[var1];
         small_permMod12[var0 * 3 + 1] = gradient[var1 + 1];
         small_permMod12[var0 * 3 + 0] = gradient[var1 + 2];
      }

      long var4 = 0L;

      for (int var2 = 0; var2 < 8; var2++) {
         int var3;
         if ((var2 & 1) == 1) {
            if ((var2 & 2) == 2) {
               var3 = 25;
            } else if ((var2 & 4) == 4) {
               var3 = 41;
            } else {
               var3 = 44;
            }
         } else if ((var2 & 2) == 0) {
            var3 = 52;
         } else if ((var2 & 4) == 0) {
            var3 = 50;
         } else {
            var3 = 26;
         }

         var4 |= (long)var3 << var2 * 6;
      }

      ROTATION_ORDER = var4;
   }
}