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