picrate 2.3.0-java → 2.4.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +2 -0
- data/README.md +1 -1
- data/lib/picrate/app.rb +1 -5
- data/lib/picrate/version.rb +1 -1
- data/library/pdf/pdf.rb +1 -0
- data/library/svg/svg.rb +7 -0
- data/picrate.gemspec +3 -2
- data/pom.rb +17 -9
- data/pom.xml +16 -3
- data/src/main/java/monkstone/FastNoiseModuleJava.java +127 -0
- data/src/main/java/monkstone/PicrateLibrary.java +2 -0
- data/src/main/java/monkstone/SmoothNoiseModuleJava.java +127 -0
- data/src/main/java/monkstone/noise/OpenSimplex2F.java +752 -820
- data/src/main/java/monkstone/noise/OpenSimplex2S.java +1138 -1106
- data/src/main/java/processing/core/PApplet.java +1 -92
- data/src/main/java/processing/pdf/PGraphicsPDF.java +61 -139
- data/src/main/java/processing/svg/PGraphicsSVG.java +378 -0
- data/test/respond_to_test.rb +0 -1
- data/vendors/Rakefile +1 -1
- metadata +15 -15
- data/src/main/java/monkstone/noise/FastTerrain.java +0 -874
- data/src/main/java/monkstone/noise/Noise.java +0 -90
- data/src/main/java/monkstone/noise/NoiseGenerator.java +0 -75
- data/src/main/java/monkstone/noise/NoiseMode.java +0 -28
- data/src/main/java/monkstone/noise/SmoothTerrain.java +0 -1099
@@ -1,90 +0,0 @@
|
|
1
|
-
package monkstone.noise;
|
2
|
-
|
3
|
-
/*
|
4
|
-
* Copyright (c) 2021 Martin Prout
|
5
|
-
*
|
6
|
-
* This library is free software; you can redistribute it and/or
|
7
|
-
* modify it under the terms of the GNU General Public
|
8
|
-
* License as published by the Free Software Foundation; either
|
9
|
-
* version 3.0 of the License, or (at your option) any later version.
|
10
|
-
*
|
11
|
-
* http://creativecommons.org/licenses/LGPL/2.1/
|
12
|
-
*
|
13
|
-
* This library is distributed in the hope that it will be useful,
|
14
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
15
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
16
|
-
* Lesser General Public License for more details.
|
17
|
-
*
|
18
|
-
* You should have received a copy of the GNU General Public
|
19
|
-
* License along with this library; if not, write to the Free Software
|
20
|
-
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
21
|
-
*/
|
22
|
-
public interface Noise {
|
23
|
-
|
24
|
-
/**
|
25
|
-
*
|
26
|
-
* @param x
|
27
|
-
* @return
|
28
|
-
*/
|
29
|
-
default float noise(float x) {
|
30
|
-
return noise(x, 0);
|
31
|
-
}
|
32
|
-
|
33
|
-
/**
|
34
|
-
*
|
35
|
-
* @param x
|
36
|
-
* @param y
|
37
|
-
* @return
|
38
|
-
*/
|
39
|
-
default float noise(float x, float y) {
|
40
|
-
return noise(x, y, 0);
|
41
|
-
}
|
42
|
-
|
43
|
-
/**
|
44
|
-
* <p>
|
45
|
-
* Returns the Perlin noise value at specified coordinates. Perlin noise is
|
46
|
-
* a random sequence generator producing a more natural ordered, harmonic
|
47
|
-
* succession of numbers compared to the standard <b>random()</b> function.
|
48
|
-
* It was invented by Ken Perlin in the 1980s and been used since in
|
49
|
-
* graphical applications to produce procedural textures, natural motion,
|
50
|
-
* shapes, terrains etc. The main difference to the
|
51
|
-
* <b>random()</b> function is that Perlin noise is defined in an infinite
|
52
|
-
* n-dimensional space where each pair of coordinates corresponds to a fixed
|
53
|
-
* semi-random value (fixed only for the lifespan of the program). The
|
54
|
-
* resulting value will always be between 0.0 and 1.0. Processing can
|
55
|
-
* compute 1D, 2D and 3D noise, depending on the number of coordinates
|
56
|
-
* given. The noise value can be animated by moving through the noise space
|
57
|
-
* as demonstrated in the example above. The 2nd and 3rd dimension can also
|
58
|
-
* be interpreted as time.The actual noise is structured similar to an audio
|
59
|
-
* signal, in respect to the function's use of frequencies. Similar to the
|
60
|
-
* concept of harmonics in physics, perlin noise is computed over several
|
61
|
-
* octaves which are added together for the final result. Another way to
|
62
|
-
* adjust the character of the resulting sequence is the scale of the input
|
63
|
-
* coordinates. As the function works within an infinite space the value of
|
64
|
-
* the coordinates doesn't matter as such, only the distance between
|
65
|
-
* successive coordinates does (eg. when using <b>noise()</b> within a
|
66
|
-
* loop). As a general rule the smaller the difference between coordinates,
|
67
|
-
* the smoother the resulting noise sequence will be. Steps of 0.005-0.03
|
68
|
-
* work best for most applications, but this will differ depending on use.
|
69
|
-
* <p>
|
70
|
-
* @param x x-coordinate in noise space
|
71
|
-
* @param y y-coordinate in noise space
|
72
|
-
* @param z z-coordinate in noise space
|
73
|
-
* @return
|
74
|
-
*/
|
75
|
-
float noise(float x, float y, float z);
|
76
|
-
|
77
|
-
float noise(float x, float y, float z, float w);
|
78
|
-
|
79
|
-
void noiseMode(NoiseMode mode);
|
80
|
-
|
81
|
-
/**
|
82
|
-
* Sets the seed value for <b>noise()</b>.By default, <b>noise()</b>
|
83
|
-
* produces different results each time the program is run. Set the
|
84
|
-
* <b>value</b> parameter to a constant to return the same pseudo-random
|
85
|
-
* numbers each time the software is run.
|
86
|
-
*
|
87
|
-
* @param seed
|
88
|
-
*/
|
89
|
-
void noiseSeed(long seed);
|
90
|
-
}
|
@@ -1,75 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* To change this license header, choose License Headers in Project Properties.
|
3
|
-
* To change this template file, choose Tools | Templates
|
4
|
-
* and open the template in the editor.
|
5
|
-
*/
|
6
|
-
package monkstone.noise;
|
7
|
-
|
8
|
-
/**
|
9
|
-
*
|
10
|
-
* @author Martin Prout
|
11
|
-
*/
|
12
|
-
public class NoiseGenerator implements Noise {
|
13
|
-
|
14
|
-
private Noise implementation;
|
15
|
-
private NoiseMode mode;
|
16
|
-
private Long seed;
|
17
|
-
|
18
|
-
public NoiseGenerator() {
|
19
|
-
seed = System.currentTimeMillis();
|
20
|
-
this.implementation = new OpenSimplex2F(seed);
|
21
|
-
this.mode = NoiseMode.DEFAULT;
|
22
|
-
}
|
23
|
-
|
24
|
-
@Override
|
25
|
-
public void noiseMode(NoiseMode mode) {
|
26
|
-
switch (mode) {
|
27
|
-
case DEFAULT:
|
28
|
-
if (this.mode != NoiseMode.DEFAULT) {
|
29
|
-
this.implementation = new OpenSimplex2F(seed);
|
30
|
-
this.mode = NoiseMode.DEFAULT;
|
31
|
-
}
|
32
|
-
break;
|
33
|
-
case OPEN_SMOOTH:
|
34
|
-
if (this.mode != NoiseMode.OPEN_SMOOTH) {
|
35
|
-
this.implementation = new OpenSimplex2S(seed);
|
36
|
-
this.mode = NoiseMode.OPEN_SMOOTH;
|
37
|
-
break;
|
38
|
-
}
|
39
|
-
case SMOOTH_TERRAIN:
|
40
|
-
if (this.mode != NoiseMode.SMOOTH_TERRAIN) {
|
41
|
-
this.implementation = new SmoothTerrain(seed);
|
42
|
-
this.mode = NoiseMode.SMOOTH_TERRAIN;
|
43
|
-
}
|
44
|
-
break;
|
45
|
-
case FAST_TERRAIN:
|
46
|
-
if (this.mode != NoiseMode.FAST_TERRAIN) {
|
47
|
-
this.implementation = new FastTerrain(seed);
|
48
|
-
this.mode = NoiseMode.FAST_TERRAIN;
|
49
|
-
}
|
50
|
-
break;
|
51
|
-
default:
|
52
|
-
this.implementation = new OpenSimplex2F(seed);
|
53
|
-
this.mode = NoiseMode.DEFAULT;
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
public NoiseMode noiseMode() {
|
58
|
-
return this.mode;
|
59
|
-
}
|
60
|
-
|
61
|
-
@Override
|
62
|
-
public float noise(float x, float y, float z) {
|
63
|
-
return implementation.noise(x, y, z);
|
64
|
-
}
|
65
|
-
|
66
|
-
@Override
|
67
|
-
public float noise(float x, float y, float z, float w) {
|
68
|
-
return implementation.noise(x, y, z, w);
|
69
|
-
}
|
70
|
-
|
71
|
-
@Override
|
72
|
-
public void noiseSeed(long seed) {
|
73
|
-
this.seed = seed;
|
74
|
-
}
|
75
|
-
}
|
@@ -1,28 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* To change this license header, choose License Headers in Project Properties.
|
3
|
-
* To change this template file, choose Tools | Templates
|
4
|
-
* and open the template in the editor.
|
5
|
-
*/
|
6
|
-
package monkstone.noise;
|
7
|
-
|
8
|
-
/**
|
9
|
-
*
|
10
|
-
* @author tux
|
11
|
-
*/
|
12
|
-
public enum NoiseMode {
|
13
|
-
DEFAULT("Fast OpenSimplex2"),
|
14
|
-
FAST_TERRAIN("Fast Terrain"),
|
15
|
-
SMOOTH_TERRAIN("Smooth Terrain"),
|
16
|
-
OPEN_SMOOTH("Smooth OpenSimplex2");
|
17
|
-
|
18
|
-
private final String description;
|
19
|
-
|
20
|
-
NoiseMode(String description) {
|
21
|
-
this.description = description;
|
22
|
-
}
|
23
|
-
|
24
|
-
public String description() {
|
25
|
-
return description;
|
26
|
-
}
|
27
|
-
|
28
|
-
}
|
@@ -1,1099 +0,0 @@
|
|
1
|
-
package monkstone.noise;
|
2
|
-
|
3
|
-
/**
|
4
|
-
* K.jpg's OpenSimplex 2, smooth variant ("SuperSimplex")
|
5
|
-
*
|
6
|
-
* - 2D is standard simplex, modified to support larger kernels. Implemented
|
7
|
-
* using a lookup table. - 3D is "Re-oriented 8-point BCC noise" which
|
8
|
-
* constructs a congruent BCC lattice in a much different way than usual. - 4D
|
9
|
-
* uses a naïve pregenerated lookup table, and averages out to the expected
|
10
|
-
* performance.
|
11
|
-
*
|
12
|
-
* Multiple versions of each function are provided. See the documentation above
|
13
|
-
* each, for more info.
|
14
|
-
*/
|
15
|
-
public class SmoothTerrain implements Noise {
|
16
|
-
|
17
|
-
private static final int PSIZE = 2048;
|
18
|
-
private static final int PMASK = 2047;
|
19
|
-
|
20
|
-
private final short[] perm;
|
21
|
-
private final Grad2[] permGrad2;
|
22
|
-
private final Grad3[] permGrad3;
|
23
|
-
private final Grad4[] permGrad4;
|
24
|
-
|
25
|
-
public SmoothTerrain(long seed) {
|
26
|
-
perm = new short[PSIZE];
|
27
|
-
permGrad2 = new Grad2[PSIZE];
|
28
|
-
permGrad3 = new Grad3[PSIZE];
|
29
|
-
permGrad4 = new Grad4[PSIZE];
|
30
|
-
short[] source = new short[PSIZE];
|
31
|
-
for (short i = 0; i < PSIZE; i++) {
|
32
|
-
source[i] = i;
|
33
|
-
}
|
34
|
-
for (int i = PSIZE - 1; i >= 0; i--) {
|
35
|
-
seed = seed * 6364136223846793005L + 1442695040888963407L;
|
36
|
-
int r = (int) ((seed + 31) % (i + 1));
|
37
|
-
if (r < 0) {
|
38
|
-
r += (i + 1);
|
39
|
-
}
|
40
|
-
perm[i] = source[r];
|
41
|
-
permGrad2[i] = GRADIENTS_2D[perm[i]];
|
42
|
-
permGrad3[i] = GRADIENTS_3D[perm[i]];
|
43
|
-
permGrad4[i] = GRADIENTS_4D[perm[i]];
|
44
|
-
source[r] = source[i];
|
45
|
-
}
|
46
|
-
}
|
47
|
-
|
48
|
-
/*
|
49
|
-
* Noise Evaluators
|
50
|
-
*/
|
51
|
-
/**
|
52
|
-
* 2D SuperSimplex noise, standard lattice orientation.
|
53
|
-
*
|
54
|
-
* @param x
|
55
|
-
* @param y
|
56
|
-
* @return
|
57
|
-
*/
|
58
|
-
public double noise2(double x, double y) {
|
59
|
-
|
60
|
-
// Get points for A2* lattice
|
61
|
-
double s = 0.366025403784439 * (x + y);
|
62
|
-
double xs = x + s, ys = y + s;
|
63
|
-
|
64
|
-
return noise2_Base(xs, ys);
|
65
|
-
}
|
66
|
-
|
67
|
-
/**
|
68
|
-
* 2D SuperSimplex noise, with Y pointing down the main diagonal.Might be
|
69
|
-
* better for a 2D sandbox style game, where Y is vertical.Probably slightly
|
70
|
-
* less optimal for heightmaps or continent maps.
|
71
|
-
*
|
72
|
-
* @param x
|
73
|
-
* @param y
|
74
|
-
* @return
|
75
|
-
*/
|
76
|
-
public double noise2_XBeforeY(double x, double y) {
|
77
|
-
|
78
|
-
// Skew transform and rotation baked into one.
|
79
|
-
double xx = x * 0.7071067811865476;
|
80
|
-
double yy = y * 1.224744871380249;
|
81
|
-
|
82
|
-
return noise2_Base(yy + xx, yy - xx);
|
83
|
-
}
|
84
|
-
|
85
|
-
/**
|
86
|
-
* 2D SuperSimplex noise base. Lookup table implementation inspired by
|
87
|
-
* DigitalShadow.
|
88
|
-
*/
|
89
|
-
private double noise2_Base(double xs, double ys) {
|
90
|
-
double value = 0;
|
91
|
-
|
92
|
-
// Get base points and offsets
|
93
|
-
int xsb = fastFloor(xs), ysb = fastFloor(ys);
|
94
|
-
double xsi = xs - xsb, ysi = ys - ysb;
|
95
|
-
|
96
|
-
// Index to point list
|
97
|
-
int a = (int) (xsi + ysi);
|
98
|
-
int index
|
99
|
-
= (a << 2)
|
100
|
-
| (int) (xsi - ysi / 2 + 1 - a / 2.0) << 3
|
101
|
-
| (int) (ysi - xsi / 2 + 1 - a / 2.0) << 4;
|
102
|
-
|
103
|
-
double ssi = (xsi + ysi) * -0.211324865405187;
|
104
|
-
double xi = xsi + ssi, yi = ysi + ssi;
|
105
|
-
|
106
|
-
// Point contributions
|
107
|
-
for (int i = 0; i < 4; i++) {
|
108
|
-
LatticePoint2D c = LOOKUP_2D[index + i];
|
109
|
-
|
110
|
-
double dx = xi + c.dx, dy = yi + c.dy;
|
111
|
-
double attn = 2.0 / 3.0 - dx * dx - dy * dy;
|
112
|
-
if (attn <= 0) {
|
113
|
-
continue;
|
114
|
-
}
|
115
|
-
|
116
|
-
int pxm = (xsb + c.xsv) & PMASK, pym = (ysb + c.ysv) & PMASK;
|
117
|
-
Grad2 grad = permGrad2[perm[pxm] ^ pym];
|
118
|
-
double extrapolation = grad.dx * dx + grad.dy * dy;
|
119
|
-
|
120
|
-
attn *= attn;
|
121
|
-
value += attn * attn * extrapolation;
|
122
|
-
}
|
123
|
-
|
124
|
-
return value;
|
125
|
-
}
|
126
|
-
|
127
|
-
/**
|
128
|
-
* 3D Re-oriented 8-point BCC noise, with better visual isotropy in (X,
|
129
|
-
* Y).Recommended for 3D terrain and time-varied animations.The Z coordinate
|
130
|
-
* should always be the "different" coordinate in your use case.If Y is
|
131
|
-
* vertical in world coordinates, call noise3_XYBeforeZ(x, z, Y) or use
|
132
|
-
* noise3_XZBeforeY.If Z is vertical in world coordinates, call
|
133
|
-
* noise3_XYBeforeZ(x, y, Z). For a time varied animation, call
|
134
|
-
* noise3_XYBeforeZ(x, y, T).
|
135
|
-
*
|
136
|
-
* @param x
|
137
|
-
* @param y
|
138
|
-
* @param z
|
139
|
-
* @return
|
140
|
-
*/
|
141
|
-
public double noise3_XYBeforeZ(double x, double y, double z) {
|
142
|
-
|
143
|
-
// Re-orient the cubic lattices without skewing, to make X and Y triangular like 2D.
|
144
|
-
// Orthonormal rotation. Not a skew transform.
|
145
|
-
double xy = x + y;
|
146
|
-
double s2 = xy * -0.211324865405187;
|
147
|
-
double zz = z * 0.577350269189626;
|
148
|
-
double xr = x + s2 - zz, yr = y + s2 - zz;
|
149
|
-
double zr = xy * 0.577350269189626 + zz;
|
150
|
-
|
151
|
-
// Evaluate both lattices to form a BCC lattice.
|
152
|
-
return noise3_BCC(xr, yr, zr);
|
153
|
-
}
|
154
|
-
|
155
|
-
/**
|
156
|
-
* 3D Re-oriented 8-point BCC noise, with better visual isotropy in (X,
|
157
|
-
* Z).Recommended for 3D terrain and time-varied animations.The Y coordinate
|
158
|
-
* should always be the "different" coordinate in your use case.If Y is
|
159
|
-
* vertical in world coordinates, call noise3_XZBeforeY(x, Y, z).If Z is
|
160
|
-
* vertical in world coordinates, call noise3_XZBeforeY(x, Z, y) or use
|
161
|
-
* noise3_XYBeforeZ. For a time varied animation, call noise3_XZBeforeY(x,
|
162
|
-
* T, y) or use noise3_XYBeforeZ.
|
163
|
-
*
|
164
|
-
* @param x
|
165
|
-
* @param y
|
166
|
-
* @param z
|
167
|
-
* @return
|
168
|
-
*/
|
169
|
-
public double noise3_XZBeforeY(double x, double y, double z) {
|
170
|
-
|
171
|
-
// Re-orient the cubic lattices without skewing, to make X and Z triangular like 2D.
|
172
|
-
// Orthonormal rotation. Not a skew transform.
|
173
|
-
double xz = x + z;
|
174
|
-
double s2 = xz * -0.211324865405187;
|
175
|
-
double yy = y * 0.577350269189626;
|
176
|
-
double xr = x + s2 - yy;
|
177
|
-
double zr = z + s2 - yy;
|
178
|
-
double yr = xz * 0.577350269189626 + yy;
|
179
|
-
|
180
|
-
// Evaluate both lattices to form a BCC lattice.
|
181
|
-
return noise3_BCC(xr, yr, zr);
|
182
|
-
}
|
183
|
-
|
184
|
-
/**
|
185
|
-
* Generate overlapping cubic lattices for 3D Re-oriented BCC noise. Lookup
|
186
|
-
* table implementation inspired by DigitalShadow. It was actually faster to
|
187
|
-
* narrow down the points in the loop itself, than to build up the index
|
188
|
-
* with enough info to isolate 8 points.
|
189
|
-
*/
|
190
|
-
private double noise3_BCC(double xr, double yr, double zr) {
|
191
|
-
|
192
|
-
// Get base and offsets inside cube of first lattice.
|
193
|
-
int xrb = fastFloor(xr), yrb = fastFloor(yr), zrb = fastFloor(zr);
|
194
|
-
double xri = xr - xrb, yri = yr - yrb, zri = zr - zrb;
|
195
|
-
|
196
|
-
// Identify which octant of the cube we're in. This determines which cell
|
197
|
-
// in the other cubic lattice we're in, and also narrows down one point on each.
|
198
|
-
int xht = (int) (xri + 0.5), yht = (int) (yri + 0.5), zht = (int) (zri + 0.5);
|
199
|
-
int index = (xht) | (yht << 1) | (zht << 2);
|
200
|
-
|
201
|
-
// Point contributions
|
202
|
-
double value = 0;
|
203
|
-
LatticePoint3D c = LOOKUP_3D[index];
|
204
|
-
while (c != null) {
|
205
|
-
double dxr = xri + c.dxr, dyr = yri + c.dyr, dzr = zri + c.dzr;
|
206
|
-
double attn = 0.75 - dxr * dxr - dyr * dyr - dzr * dzr;
|
207
|
-
if (attn < 0) {
|
208
|
-
c = c.nextOnFailure;
|
209
|
-
} else {
|
210
|
-
int pxm = (xrb + c.xrv) & PMASK, pym = (yrb + c.yrv) & PMASK, pzm = (zrb + c.zrv) & PMASK;
|
211
|
-
Grad3 grad = permGrad3[perm[perm[pxm] ^ pym] ^ pzm];
|
212
|
-
double extrapolation = grad.dx * dxr + grad.dy * dyr + grad.dz * dzr;
|
213
|
-
|
214
|
-
attn *= attn;
|
215
|
-
value += attn * attn * extrapolation;
|
216
|
-
c = c.nextOnSuccess;
|
217
|
-
}
|
218
|
-
}
|
219
|
-
return value;
|
220
|
-
}
|
221
|
-
|
222
|
-
/**
|
223
|
-
* 4D SuperSimplex noise, with XY and ZW forming orthogonal triangular-based
|
224
|
-
* planes.Recommended for 3D terrain, where X and Y (or Z and W) are
|
225
|
-
* horizontal.Recommended for noise(x, y, sin(time), cos(time)) trick.
|
226
|
-
*
|
227
|
-
* @param x
|
228
|
-
* @param y
|
229
|
-
* @param z
|
230
|
-
* @param w
|
231
|
-
* @return
|
232
|
-
*/
|
233
|
-
public double noise4_XYBeforeZW(double x, double y, double z, double w) {
|
234
|
-
|
235
|
-
double s2 = (x + y) * -0.28522513987434876941 + (z + w) * 0.83897065470611435718;
|
236
|
-
double t2 = (z + w) * 0.21939749883706435719 + (x + y) * -0.48214856493302476942;
|
237
|
-
double xs = x + s2, ys = y + s2, zs = z + t2, ws = w + t2;
|
238
|
-
|
239
|
-
return noise4_Base(xs, ys, zs, ws);
|
240
|
-
}
|
241
|
-
|
242
|
-
/**
|
243
|
-
* 4D SuperSimplex noise, with XZ and YW forming orthogonal triangular-based
|
244
|
-
* planes.Recommended for 3D terrain, where X and Z (or Y and W) are
|
245
|
-
* horizontal.
|
246
|
-
*
|
247
|
-
* @param x
|
248
|
-
* @param y
|
249
|
-
* @param z
|
250
|
-
* @param w
|
251
|
-
* @return
|
252
|
-
*/
|
253
|
-
public double noise4_XZBeforeYW(double x, double y, double z, double w) {
|
254
|
-
|
255
|
-
double s2 = (x + z) * -0.28522513987434876941 + (y + w) * 0.83897065470611435718;
|
256
|
-
double t2 = (y + w) * 0.21939749883706435719 + (x + z) * -0.48214856493302476942;
|
257
|
-
double xs = x + s2, ys = y + t2, zs = z + s2, ws = w + t2;
|
258
|
-
|
259
|
-
return noise4_Base(xs, ys, zs, ws);
|
260
|
-
}
|
261
|
-
|
262
|
-
|
263
|
-
/**
|
264
|
-
* 4D SuperSimplex noise base. Using ultra-simple 4x4x4x4 lookup
|
265
|
-
* partitioning. This isn't as elegant or SIMD/GPU/etc. portable as other
|
266
|
-
* approaches, but it does compete performance-wise with optimized
|
267
|
-
* OpenSimplex1.
|
268
|
-
*/
|
269
|
-
private double noise4_Base(double xs, double ys, double zs, double ws) {
|
270
|
-
double value = 0;
|
271
|
-
|
272
|
-
// Get base points and offsets
|
273
|
-
int xsb = fastFloor(xs), ysb = fastFloor(ys), zsb = fastFloor(zs), wsb = fastFloor(ws);
|
274
|
-
double xsi = xs - xsb, ysi = ys - ysb, zsi = zs - zsb, wsi = ws - wsb;
|
275
|
-
|
276
|
-
// Unskewed offsets
|
277
|
-
double ssi = (xsi + ysi + zsi + wsi) * -0.138196601125011;
|
278
|
-
double xi = xsi + ssi, yi = ysi + ssi, zi = zsi + ssi, wi = wsi + ssi;
|
279
|
-
|
280
|
-
int index = ((fastFloor(xs * 4) & 3))
|
281
|
-
| ((fastFloor(ys * 4) & 3) << 2)
|
282
|
-
| ((fastFloor(zs * 4) & 3) << 4)
|
283
|
-
| ((fastFloor(ws * 4) & 3) << 6);
|
284
|
-
|
285
|
-
// Point contributions
|
286
|
-
for (LatticePoint4D c : LOOKUP_4D[index]) {
|
287
|
-
double dx = xi + c.dx, dy = yi + c.dy, dz = zi + c.dz, dw = wi + c.dw;
|
288
|
-
double attn = 0.8 - dx * dx - dy * dy - dz * dz - dw * dw;
|
289
|
-
if (attn > 0) {
|
290
|
-
attn *= attn;
|
291
|
-
|
292
|
-
int pxm = (xsb + c.xsv) & PMASK, pym = (ysb + c.ysv) & PMASK;
|
293
|
-
int pzm = (zsb + c.zsv) & PMASK, pwm = (wsb + c.wsv) & PMASK;
|
294
|
-
Grad4 grad = permGrad4[perm[perm[perm[pxm] ^ pym] ^ pzm] ^ pwm];
|
295
|
-
double extrapolation = grad.dx * dx + grad.dy * dy + grad.dz * dz + grad.dw * dw;
|
296
|
-
|
297
|
-
value += attn * attn * extrapolation;
|
298
|
-
}
|
299
|
-
}
|
300
|
-
return value;
|
301
|
-
}
|
302
|
-
|
303
|
-
/*
|
304
|
-
* Utility
|
305
|
-
*/
|
306
|
-
private static int fastFloor(double x) {
|
307
|
-
int xi = (int) x;
|
308
|
-
return x < xi ? xi - 1 : xi;
|
309
|
-
}
|
310
|
-
|
311
|
-
/*
|
312
|
-
* Definitions
|
313
|
-
*/
|
314
|
-
private static final LatticePoint2D[] LOOKUP_2D;
|
315
|
-
private static final LatticePoint3D[] LOOKUP_3D;
|
316
|
-
private static final LatticePoint4D[][] LOOKUP_4D;
|
317
|
-
|
318
|
-
static {
|
319
|
-
LOOKUP_2D = new LatticePoint2D[8 * 4];
|
320
|
-
LOOKUP_3D = new LatticePoint3D[8];
|
321
|
-
LOOKUP_4D = new LatticePoint4D[256][];
|
322
|
-
|
323
|
-
for (int i = 0; i < 8; i++) {
|
324
|
-
int i1, j1, i2, j2;
|
325
|
-
if ((i & 1) == 0) {
|
326
|
-
if ((i & 2) == 0) {
|
327
|
-
i1 = -1;
|
328
|
-
j1 = 0;
|
329
|
-
} else {
|
330
|
-
i1 = 1;
|
331
|
-
j1 = 0;
|
332
|
-
}
|
333
|
-
if ((i & 4) == 0) {
|
334
|
-
i2 = 0;
|
335
|
-
j2 = -1;
|
336
|
-
} else {
|
337
|
-
i2 = 0;
|
338
|
-
j2 = 1;
|
339
|
-
}
|
340
|
-
} else {
|
341
|
-
if ((i & 2) != 0) {
|
342
|
-
i1 = 2;
|
343
|
-
j1 = 1;
|
344
|
-
} else {
|
345
|
-
i1 = 0;
|
346
|
-
j1 = 1;
|
347
|
-
}
|
348
|
-
if ((i & 4) != 0) {
|
349
|
-
i2 = 1;
|
350
|
-
j2 = 2;
|
351
|
-
} else {
|
352
|
-
i2 = 1;
|
353
|
-
j2 = 0;
|
354
|
-
}
|
355
|
-
}
|
356
|
-
LOOKUP_2D[i * 4 + 0] = new LatticePoint2D(0, 0);
|
357
|
-
LOOKUP_2D[i * 4 + 1] = new LatticePoint2D(1, 1);
|
358
|
-
LOOKUP_2D[i * 4 + 2] = new LatticePoint2D(i1, j1);
|
359
|
-
LOOKUP_2D[i * 4 + 3] = new LatticePoint2D(i2, j2);
|
360
|
-
}
|
361
|
-
|
362
|
-
for (int i = 0; i < 8; i++) {
|
363
|
-
int i1, j1, k1, i2, j2, k2;
|
364
|
-
i1 = (i) & 1;
|
365
|
-
j1 = (i >> 1) & 1;
|
366
|
-
k1 = (i >> 2) & 1;
|
367
|
-
i2 = i1 ^ 1;
|
368
|
-
j2 = j1 ^ 1;
|
369
|
-
k2 = k1 ^ 1;
|
370
|
-
|
371
|
-
// The two points within this octant, one from each of the two cubic half-lattices.
|
372
|
-
LatticePoint3D c0 = new LatticePoint3D(i1, j1, k1, 0);
|
373
|
-
LatticePoint3D c1 = new LatticePoint3D(i1 + i2, j1 + j2, k1 + k2, 1);
|
374
|
-
|
375
|
-
// (1, 0, 0) vs (0, 1, 1) away from octant.
|
376
|
-
LatticePoint3D c2 = new LatticePoint3D(i1 ^ 1, j1, k1, 0);
|
377
|
-
LatticePoint3D c3 = new LatticePoint3D(i1, j1 ^ 1, k1 ^ 1, 0);
|
378
|
-
|
379
|
-
// (1, 0, 0) vs (0, 1, 1) away from octant, on second half-lattice.
|
380
|
-
LatticePoint3D c4 = new LatticePoint3D(i1 + (i2 ^ 1), j1 + j2, k1 + k2, 1);
|
381
|
-
LatticePoint3D c5 = new LatticePoint3D(i1 + i2, j1 + (j2 ^ 1), k1 + (k2 ^ 1), 1);
|
382
|
-
|
383
|
-
// (0, 1, 0) vs (1, 0, 1) away from octant.
|
384
|
-
LatticePoint3D c6 = new LatticePoint3D(i1, j1 ^ 1, k1, 0);
|
385
|
-
LatticePoint3D c7 = new LatticePoint3D(i1 ^ 1, j1, k1 ^ 1, 0);
|
386
|
-
|
387
|
-
// (0, 1, 0) vs (1, 0, 1) away from octant, on second half-lattice.
|
388
|
-
LatticePoint3D c8 = new LatticePoint3D(i1 + i2, j1 + (j2 ^ 1), k1 + k2, 1);
|
389
|
-
LatticePoint3D c9 = new LatticePoint3D(i1 + (i2 ^ 1), j1 + j2, k1 + (k2 ^ 1), 1);
|
390
|
-
|
391
|
-
// (0, 0, 1) vs (1, 1, 0) away from octant.
|
392
|
-
LatticePoint3D cA = new LatticePoint3D(i1, j1, k1 ^ 1, 0);
|
393
|
-
LatticePoint3D cB = new LatticePoint3D(i1 ^ 1, j1 ^ 1, k1, 0);
|
394
|
-
|
395
|
-
// (0, 0, 1) vs (1, 1, 0) away from octant, on second half-lattice.
|
396
|
-
LatticePoint3D cC = new LatticePoint3D(i1 + i2, j1 + j2, k1 + (k2 ^ 1), 1);
|
397
|
-
LatticePoint3D cD = new LatticePoint3D(i1 + (i2 ^ 1), j1 + (j2 ^ 1), k1 + k2, 1);
|
398
|
-
|
399
|
-
// First two points are guaranteed.
|
400
|
-
c0.nextOnFailure = c0.nextOnSuccess = c1;
|
401
|
-
c1.nextOnFailure = c1.nextOnSuccess = c2;
|
402
|
-
|
403
|
-
// If c2 is in range, then we know c3 and c4 are not.
|
404
|
-
c2.nextOnFailure = c3;
|
405
|
-
c2.nextOnSuccess = c5;
|
406
|
-
c3.nextOnFailure = c4;
|
407
|
-
c3.nextOnSuccess = c4;
|
408
|
-
|
409
|
-
// If c4 is in range, then we know c5 is not.
|
410
|
-
c4.nextOnFailure = c5;
|
411
|
-
c4.nextOnSuccess = c6;
|
412
|
-
c5.nextOnFailure = c5.nextOnSuccess = c6;
|
413
|
-
|
414
|
-
// If c6 is in range, then we know c7 and c8 are not.
|
415
|
-
c6.nextOnFailure = c7;
|
416
|
-
c6.nextOnSuccess = c9;
|
417
|
-
c7.nextOnFailure = c8;
|
418
|
-
c7.nextOnSuccess = c8;
|
419
|
-
|
420
|
-
// If c8 is in range, then we know c9 is not.
|
421
|
-
c8.nextOnFailure = c9;
|
422
|
-
c8.nextOnSuccess = cA;
|
423
|
-
c9.nextOnFailure = c9.nextOnSuccess = cA;
|
424
|
-
|
425
|
-
// If cA is in range, then we know cB and cC are not.
|
426
|
-
cA.nextOnFailure = cB;
|
427
|
-
cA.nextOnSuccess = cD;
|
428
|
-
cB.nextOnFailure = cC;
|
429
|
-
cB.nextOnSuccess = cC;
|
430
|
-
|
431
|
-
// If cC is in range, then we know cD is not.
|
432
|
-
cC.nextOnFailure = cD;
|
433
|
-
cC.nextOnSuccess = null;
|
434
|
-
cD.nextOnFailure = cD.nextOnSuccess = null;
|
435
|
-
|
436
|
-
LOOKUP_3D[i] = c0;
|
437
|
-
}
|
438
|
-
|
439
|
-
int[][] lookup4DPregen = {
|
440
|
-
{0x15, 0x45, 0x51, 0x54, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA},
|
441
|
-
{0x15, 0x45, 0x51, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x6A, 0x95, 0x96, 0x9A, 0xA6, 0xAA},
|
442
|
-
{0x01, 0x05, 0x11, 0x15, 0x41, 0x45, 0x51, 0x55, 0x56, 0x5A, 0x66, 0x6A, 0x96, 0x9A, 0xA6, 0xAA},
|
443
|
-
{0x01, 0x15, 0x16, 0x45, 0x46, 0x51, 0x52, 0x55, 0x56, 0x5A, 0x66, 0x6A, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
444
|
-
{0x15, 0x45, 0x54, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA9, 0xAA},
|
445
|
-
{0x05, 0x15, 0x45, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xAA},
|
446
|
-
{0x05, 0x15, 0x45, 0x55, 0x56, 0x59, 0x5A, 0x66, 0x6A, 0x96, 0x9A, 0xAA},
|
447
|
-
{0x05, 0x15, 0x16, 0x45, 0x46, 0x55, 0x56, 0x59, 0x5A, 0x66, 0x6A, 0x96, 0x9A, 0xAA, 0xAB},
|
448
|
-
{0x04, 0x05, 0x14, 0x15, 0x44, 0x45, 0x54, 0x55, 0x59, 0x5A, 0x69, 0x6A, 0x99, 0x9A, 0xA9, 0xAA},
|
449
|
-
{0x05, 0x15, 0x45, 0x55, 0x56, 0x59, 0x5A, 0x69, 0x6A, 0x99, 0x9A, 0xAA},
|
450
|
-
{0x05, 0x15, 0x45, 0x55, 0x56, 0x59, 0x5A, 0x6A, 0x9A, 0xAA},
|
451
|
-
{0x05, 0x15, 0x16, 0x45, 0x46, 0x55, 0x56, 0x59, 0x5A, 0x5B, 0x6A, 0x9A, 0xAA, 0xAB},
|
452
|
-
{0x04, 0x15, 0x19, 0x45, 0x49, 0x54, 0x55, 0x58, 0x59, 0x5A, 0x69, 0x6A, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
453
|
-
{0x05, 0x15, 0x19, 0x45, 0x49, 0x55, 0x56, 0x59, 0x5A, 0x69, 0x6A, 0x99, 0x9A, 0xAA, 0xAE},
|
454
|
-
{0x05, 0x15, 0x19, 0x45, 0x49, 0x55, 0x56, 0x59, 0x5A, 0x5E, 0x6A, 0x9A, 0xAA, 0xAE},
|
455
|
-
{0x05, 0x15, 0x1A, 0x45, 0x4A, 0x55, 0x56, 0x59, 0x5A, 0x5B, 0x5E, 0x6A, 0x9A, 0xAA, 0xAB, 0xAE, 0xAF},
|
456
|
-
{0x15, 0x51, 0x54, 0x55, 0x56, 0x59, 0x65, 0x66, 0x69, 0x6A, 0x95, 0xA5, 0xA6, 0xA9, 0xAA},
|
457
|
-
{0x11, 0x15, 0x51, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0xA5, 0xA6, 0xAA},
|
458
|
-
{0x11, 0x15, 0x51, 0x55, 0x56, 0x5A, 0x65, 0x66, 0x6A, 0x96, 0xA6, 0xAA},
|
459
|
-
{0x11, 0x15, 0x16, 0x51, 0x52, 0x55, 0x56, 0x5A, 0x65, 0x66, 0x6A, 0x96, 0xA6, 0xAA, 0xAB},
|
460
|
-
{0x14, 0x15, 0x54, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x99, 0xA5, 0xA9, 0xAA},
|
461
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x9A, 0xA6, 0xA9, 0xAA},
|
462
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
463
|
-
{0x15, 0x16, 0x55, 0x56, 0x5A, 0x66, 0x6A, 0x6B, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
464
|
-
{0x14, 0x15, 0x54, 0x55, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x99, 0xA9, 0xAA},
|
465
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
466
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x9A, 0xAA},
|
467
|
-
{0x15, 0x16, 0x55, 0x56, 0x59, 0x5A, 0x66, 0x6A, 0x6B, 0x9A, 0xAA, 0xAB},
|
468
|
-
{0x14, 0x15, 0x19, 0x54, 0x55, 0x58, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x99, 0xA9, 0xAA, 0xAE},
|
469
|
-
{0x15, 0x19, 0x55, 0x59, 0x5A, 0x69, 0x6A, 0x6E, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
470
|
-
{0x15, 0x19, 0x55, 0x56, 0x59, 0x5A, 0x69, 0x6A, 0x6E, 0x9A, 0xAA, 0xAE},
|
471
|
-
{0x15, 0x1A, 0x55, 0x56, 0x59, 0x5A, 0x6A, 0x6B, 0x6E, 0x9A, 0xAA, 0xAB, 0xAE, 0xAF},
|
472
|
-
{0x10, 0x11, 0x14, 0x15, 0x50, 0x51, 0x54, 0x55, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xA9, 0xAA},
|
473
|
-
{0x11, 0x15, 0x51, 0x55, 0x56, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xAA},
|
474
|
-
{0x11, 0x15, 0x51, 0x55, 0x56, 0x65, 0x66, 0x6A, 0xA6, 0xAA},
|
475
|
-
{0x11, 0x15, 0x16, 0x51, 0x52, 0x55, 0x56, 0x65, 0x66, 0x67, 0x6A, 0xA6, 0xAA, 0xAB},
|
476
|
-
{0x14, 0x15, 0x54, 0x55, 0x59, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA9, 0xAA},
|
477
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
478
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0xA6, 0xAA},
|
479
|
-
{0x15, 0x16, 0x55, 0x56, 0x5A, 0x65, 0x66, 0x6A, 0x6B, 0xA6, 0xAA, 0xAB},
|
480
|
-
{0x14, 0x15, 0x54, 0x55, 0x59, 0x65, 0x69, 0x6A, 0xA9, 0xAA},
|
481
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0xA9, 0xAA},
|
482
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0xAA},
|
483
|
-
{0x15, 0x16, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x6B, 0xAA, 0xAB},
|
484
|
-
{0x14, 0x15, 0x19, 0x54, 0x55, 0x58, 0x59, 0x65, 0x69, 0x6A, 0x6D, 0xA9, 0xAA, 0xAE},
|
485
|
-
{0x15, 0x19, 0x55, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x6E, 0xA9, 0xAA, 0xAE},
|
486
|
-
{0x15, 0x19, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x6E, 0xAA, 0xAE},
|
487
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x66, 0x69, 0x6A, 0x6B, 0x6E, 0x9A, 0xAA, 0xAB, 0xAE, 0xAF},
|
488
|
-
{0x10, 0x15, 0x25, 0x51, 0x54, 0x55, 0x61, 0x64, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
489
|
-
{0x11, 0x15, 0x25, 0x51, 0x55, 0x56, 0x61, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xAA, 0xBA},
|
490
|
-
{0x11, 0x15, 0x25, 0x51, 0x55, 0x56, 0x61, 0x65, 0x66, 0x6A, 0x76, 0xA6, 0xAA, 0xBA},
|
491
|
-
{0x11, 0x15, 0x26, 0x51, 0x55, 0x56, 0x62, 0x65, 0x66, 0x67, 0x6A, 0x76, 0xA6, 0xAA, 0xAB, 0xBA, 0xBB},
|
492
|
-
{0x14, 0x15, 0x25, 0x54, 0x55, 0x59, 0x64, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA9, 0xAA, 0xBA},
|
493
|
-
{0x15, 0x25, 0x55, 0x65, 0x66, 0x69, 0x6A, 0x7A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
494
|
-
{0x15, 0x25, 0x55, 0x56, 0x65, 0x66, 0x69, 0x6A, 0x7A, 0xA6, 0xAA, 0xBA},
|
495
|
-
{0x15, 0x26, 0x55, 0x56, 0x65, 0x66, 0x6A, 0x6B, 0x7A, 0xA6, 0xAA, 0xAB, 0xBA, 0xBB},
|
496
|
-
{0x14, 0x15, 0x25, 0x54, 0x55, 0x59, 0x64, 0x65, 0x69, 0x6A, 0x79, 0xA9, 0xAA, 0xBA},
|
497
|
-
{0x15, 0x25, 0x55, 0x59, 0x65, 0x66, 0x69, 0x6A, 0x7A, 0xA9, 0xAA, 0xBA},
|
498
|
-
{0x15, 0x25, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x7A, 0xAA, 0xBA},
|
499
|
-
{0x15, 0x55, 0x56, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x6B, 0x7A, 0xA6, 0xAA, 0xAB, 0xBA, 0xBB},
|
500
|
-
{0x14, 0x15, 0x29, 0x54, 0x55, 0x59, 0x65, 0x68, 0x69, 0x6A, 0x6D, 0x79, 0xA9, 0xAA, 0xAE, 0xBA, 0xBE},
|
501
|
-
{0x15, 0x29, 0x55, 0x59, 0x65, 0x69, 0x6A, 0x6E, 0x7A, 0xA9, 0xAA, 0xAE, 0xBA, 0xBE},
|
502
|
-
{0x15, 0x55, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x6E, 0x7A, 0xA9, 0xAA, 0xAE, 0xBA, 0xBE},
|
503
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x6B, 0x6E, 0x7A, 0xAA, 0xAB, 0xAE, 0xBA, 0xBF},
|
504
|
-
{0x45, 0x51, 0x54, 0x55, 0x56, 0x59, 0x65, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA},
|
505
|
-
{0x41, 0x45, 0x51, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xAA},
|
506
|
-
{0x41, 0x45, 0x51, 0x55, 0x56, 0x5A, 0x66, 0x95, 0x96, 0x9A, 0xA6, 0xAA},
|
507
|
-
{0x41, 0x45, 0x46, 0x51, 0x52, 0x55, 0x56, 0x5A, 0x66, 0x95, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
508
|
-
{0x44, 0x45, 0x54, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x69, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA9, 0xAA},
|
509
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA6, 0xA9, 0xAA},
|
510
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x66, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA6, 0xAA, 0xAB},
|
511
|
-
{0x45, 0x46, 0x55, 0x56, 0x5A, 0x66, 0x6A, 0x96, 0x9A, 0x9B, 0xA6, 0xAA, 0xAB},
|
512
|
-
{0x44, 0x45, 0x54, 0x55, 0x59, 0x5A, 0x69, 0x95, 0x99, 0x9A, 0xA9, 0xAA},
|
513
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
514
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xAA},
|
515
|
-
{0x45, 0x46, 0x55, 0x56, 0x59, 0x5A, 0x6A, 0x96, 0x9A, 0x9B, 0xAA, 0xAB},
|
516
|
-
{0x44, 0x45, 0x49, 0x54, 0x55, 0x58, 0x59, 0x5A, 0x69, 0x95, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
517
|
-
{0x45, 0x49, 0x55, 0x59, 0x5A, 0x69, 0x6A, 0x99, 0x9A, 0x9E, 0xA9, 0xAA, 0xAE},
|
518
|
-
{0x45, 0x49, 0x55, 0x56, 0x59, 0x5A, 0x6A, 0x99, 0x9A, 0x9E, 0xAA, 0xAE},
|
519
|
-
{0x45, 0x4A, 0x55, 0x56, 0x59, 0x5A, 0x6A, 0x9A, 0x9B, 0x9E, 0xAA, 0xAB, 0xAE, 0xAF},
|
520
|
-
{0x50, 0x51, 0x54, 0x55, 0x56, 0x59, 0x65, 0x66, 0x69, 0x95, 0x96, 0x99, 0xA5, 0xA6, 0xA9, 0xAA},
|
521
|
-
{0x51, 0x55, 0x56, 0x59, 0x65, 0x66, 0x6A, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA},
|
522
|
-
{0x51, 0x55, 0x56, 0x5A, 0x65, 0x66, 0x6A, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xAA, 0xAB},
|
523
|
-
{0x51, 0x52, 0x55, 0x56, 0x5A, 0x66, 0x6A, 0x96, 0x9A, 0xA6, 0xA7, 0xAA, 0xAB},
|
524
|
-
{0x54, 0x55, 0x56, 0x59, 0x65, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA},
|
525
|
-
{0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA},
|
526
|
-
{0x15, 0x45, 0x51, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x6A, 0x95, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
527
|
-
{0x55, 0x56, 0x5A, 0x66, 0x6A, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
528
|
-
{0x54, 0x55, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA5, 0xA9, 0xAA, 0xAE},
|
529
|
-
{0x15, 0x45, 0x54, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
530
|
-
{0x15, 0x45, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA6, 0xA9, 0xAA, 0xAB, 0xAE},
|
531
|
-
{0x55, 0x56, 0x59, 0x5A, 0x66, 0x6A, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
532
|
-
{0x54, 0x55, 0x58, 0x59, 0x5A, 0x69, 0x6A, 0x99, 0x9A, 0xA9, 0xAA, 0xAD, 0xAE},
|
533
|
-
{0x55, 0x59, 0x5A, 0x69, 0x6A, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
534
|
-
{0x55, 0x56, 0x59, 0x5A, 0x69, 0x6A, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
535
|
-
{0x55, 0x56, 0x59, 0x5A, 0x6A, 0x9A, 0xAA, 0xAB, 0xAE, 0xAF},
|
536
|
-
{0x50, 0x51, 0x54, 0x55, 0x65, 0x66, 0x69, 0x95, 0xA5, 0xA6, 0xA9, 0xAA},
|
537
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
538
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x6A, 0x95, 0x96, 0xA5, 0xA6, 0xAA},
|
539
|
-
{0x51, 0x52, 0x55, 0x56, 0x65, 0x66, 0x6A, 0x96, 0xA6, 0xA7, 0xAA, 0xAB},
|
540
|
-
{0x54, 0x55, 0x59, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x99, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
541
|
-
{0x15, 0x51, 0x54, 0x55, 0x56, 0x59, 0x65, 0x66, 0x69, 0x6A, 0x95, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
542
|
-
{0x15, 0x51, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAB, 0xBA},
|
543
|
-
{0x55, 0x56, 0x5A, 0x65, 0x66, 0x6A, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
544
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x6A, 0x95, 0x99, 0xA5, 0xA9, 0xAA},
|
545
|
-
{0x15, 0x54, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAE, 0xBA},
|
546
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x9A, 0xA6, 0xA9, 0xAA},
|
547
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
548
|
-
{0x54, 0x55, 0x58, 0x59, 0x65, 0x69, 0x6A, 0x99, 0xA9, 0xAA, 0xAD, 0xAE},
|
549
|
-
{0x55, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
550
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
551
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x66, 0x69, 0x6A, 0x9A, 0xAA, 0xAB, 0xAE, 0xAF},
|
552
|
-
{0x50, 0x51, 0x54, 0x55, 0x61, 0x64, 0x65, 0x66, 0x69, 0x95, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
553
|
-
{0x51, 0x55, 0x61, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xA9, 0xAA, 0xB6, 0xBA},
|
554
|
-
{0x51, 0x55, 0x56, 0x61, 0x65, 0x66, 0x6A, 0xA5, 0xA6, 0xAA, 0xB6, 0xBA},
|
555
|
-
{0x51, 0x55, 0x56, 0x62, 0x65, 0x66, 0x6A, 0xA6, 0xA7, 0xAA, 0xAB, 0xB6, 0xBA, 0xBB},
|
556
|
-
{0x54, 0x55, 0x64, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xA9, 0xAA, 0xB9, 0xBA},
|
557
|
-
{0x55, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
558
|
-
{0x55, 0x56, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
559
|
-
{0x55, 0x56, 0x65, 0x66, 0x6A, 0xA6, 0xAA, 0xAB, 0xBA, 0xBB},
|
560
|
-
{0x54, 0x55, 0x59, 0x64, 0x65, 0x69, 0x6A, 0xA5, 0xA9, 0xAA, 0xB9, 0xBA},
|
561
|
-
{0x55, 0x59, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
562
|
-
{0x15, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
563
|
-
{0x15, 0x55, 0x56, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0xA6, 0xAA, 0xAB, 0xBA, 0xBB},
|
564
|
-
{0x54, 0x55, 0x59, 0x65, 0x68, 0x69, 0x6A, 0xA9, 0xAA, 0xAD, 0xAE, 0xB9, 0xBA, 0xBE},
|
565
|
-
{0x55, 0x59, 0x65, 0x69, 0x6A, 0xA9, 0xAA, 0xAE, 0xBA, 0xBE},
|
566
|
-
{0x15, 0x55, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0xA9, 0xAA, 0xAE, 0xBA, 0xBE},
|
567
|
-
{0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0xAA, 0xAB, 0xAE, 0xBA, 0xBF},
|
568
|
-
{0x40, 0x41, 0x44, 0x45, 0x50, 0x51, 0x54, 0x55, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA},
|
569
|
-
{0x41, 0x45, 0x51, 0x55, 0x56, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xAA},
|
570
|
-
{0x41, 0x45, 0x51, 0x55, 0x56, 0x95, 0x96, 0x9A, 0xA6, 0xAA},
|
571
|
-
{0x41, 0x45, 0x46, 0x51, 0x52, 0x55, 0x56, 0x95, 0x96, 0x97, 0x9A, 0xA6, 0xAA, 0xAB},
|
572
|
-
{0x44, 0x45, 0x54, 0x55, 0x59, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA9, 0xAA},
|
573
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
574
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0xA6, 0xAA},
|
575
|
-
{0x45, 0x46, 0x55, 0x56, 0x5A, 0x95, 0x96, 0x9A, 0x9B, 0xA6, 0xAA, 0xAB},
|
576
|
-
{0x44, 0x45, 0x54, 0x55, 0x59, 0x95, 0x99, 0x9A, 0xA9, 0xAA},
|
577
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0xA9, 0xAA},
|
578
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0xAA},
|
579
|
-
{0x45, 0x46, 0x55, 0x56, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0x9B, 0xAA, 0xAB},
|
580
|
-
{0x44, 0x45, 0x49, 0x54, 0x55, 0x58, 0x59, 0x95, 0x99, 0x9A, 0x9D, 0xA9, 0xAA, 0xAE},
|
581
|
-
{0x45, 0x49, 0x55, 0x59, 0x5A, 0x95, 0x99, 0x9A, 0x9E, 0xA9, 0xAA, 0xAE},
|
582
|
-
{0x45, 0x49, 0x55, 0x56, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0x9E, 0xAA, 0xAE},
|
583
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x6A, 0x96, 0x99, 0x9A, 0x9B, 0x9E, 0xAA, 0xAB, 0xAE, 0xAF},
|
584
|
-
{0x50, 0x51, 0x54, 0x55, 0x65, 0x95, 0x96, 0x99, 0xA5, 0xA6, 0xA9, 0xAA},
|
585
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
586
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xAA},
|
587
|
-
{0x51, 0x52, 0x55, 0x56, 0x66, 0x95, 0x96, 0x9A, 0xA6, 0xA7, 0xAA, 0xAB},
|
588
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
589
|
-
{0x45, 0x51, 0x54, 0x55, 0x56, 0x59, 0x65, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
590
|
-
{0x45, 0x51, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAB, 0xEA},
|
591
|
-
{0x55, 0x56, 0x5A, 0x66, 0x6A, 0x95, 0x96, 0x9A, 0xA6, 0xAA, 0xAB},
|
592
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x95, 0x99, 0x9A, 0xA5, 0xA9, 0xAA},
|
593
|
-
{0x45, 0x54, 0x55, 0x56, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAE, 0xEA},
|
594
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA6, 0xA9, 0xAA},
|
595
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x66, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA6, 0xAA, 0xAB},
|
596
|
-
{0x54, 0x55, 0x58, 0x59, 0x69, 0x95, 0x99, 0x9A, 0xA9, 0xAA, 0xAD, 0xAE},
|
597
|
-
{0x55, 0x59, 0x5A, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
598
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA9, 0xAA, 0xAE},
|
599
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x6A, 0x96, 0x99, 0x9A, 0xAA, 0xAB, 0xAE, 0xAF},
|
600
|
-
{0x50, 0x51, 0x54, 0x55, 0x65, 0x95, 0xA5, 0xA6, 0xA9, 0xAA},
|
601
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x95, 0x96, 0xA5, 0xA6, 0xA9, 0xAA},
|
602
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x95, 0x96, 0xA5, 0xA6, 0xAA},
|
603
|
-
{0x51, 0x52, 0x55, 0x56, 0x65, 0x66, 0x95, 0x96, 0xA5, 0xA6, 0xA7, 0xAA, 0xAB},
|
604
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x95, 0x99, 0xA5, 0xA6, 0xA9, 0xAA},
|
605
|
-
{0x51, 0x54, 0x55, 0x56, 0x59, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA, 0xEA},
|
606
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x6A, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA},
|
607
|
-
{0x51, 0x55, 0x56, 0x5A, 0x65, 0x66, 0x6A, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xAA, 0xAB},
|
608
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x95, 0x99, 0xA5, 0xA9, 0xAA},
|
609
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA},
|
610
|
-
{0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA},
|
611
|
-
{0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x6A, 0x95, 0x96, 0x9A, 0xA6, 0xA9, 0xAA, 0xAB},
|
612
|
-
{0x54, 0x55, 0x58, 0x59, 0x65, 0x69, 0x95, 0x99, 0xA5, 0xA9, 0xAA, 0xAD, 0xAE},
|
613
|
-
{0x54, 0x55, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA5, 0xA9, 0xAA, 0xAE},
|
614
|
-
{0x55, 0x56, 0x59, 0x5A, 0x65, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA6, 0xA9, 0xAA, 0xAE},
|
615
|
-
{0x55, 0x56, 0x59, 0x5A, 0x66, 0x69, 0x6A, 0x96, 0x99, 0x9A, 0xA6, 0xA9, 0xAA, 0xAB, 0xAE, 0xAF},
|
616
|
-
{0x50, 0x51, 0x54, 0x55, 0x61, 0x64, 0x65, 0x95, 0xA5, 0xA6, 0xA9, 0xAA, 0xB5, 0xBA},
|
617
|
-
{0x51, 0x55, 0x61, 0x65, 0x66, 0x95, 0xA5, 0xA6, 0xA9, 0xAA, 0xB6, 0xBA},
|
618
|
-
{0x51, 0x55, 0x56, 0x61, 0x65, 0x66, 0x95, 0x96, 0xA5, 0xA6, 0xAA, 0xB6, 0xBA},
|
619
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x6A, 0x96, 0xA5, 0xA6, 0xA7, 0xAA, 0xAB, 0xB6, 0xBA, 0xBB},
|
620
|
-
{0x54, 0x55, 0x64, 0x65, 0x69, 0x95, 0xA5, 0xA6, 0xA9, 0xAA, 0xB9, 0xBA},
|
621
|
-
{0x55, 0x65, 0x66, 0x69, 0x6A, 0x95, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
622
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
623
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x6A, 0x96, 0xA5, 0xA6, 0xAA, 0xAB, 0xBA, 0xBB},
|
624
|
-
{0x54, 0x55, 0x59, 0x64, 0x65, 0x69, 0x95, 0x99, 0xA5, 0xA9, 0xAA, 0xB9, 0xBA},
|
625
|
-
{0x54, 0x55, 0x59, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x99, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
626
|
-
{0x55, 0x56, 0x59, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA},
|
627
|
-
{0x55, 0x56, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x96, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAB, 0xBA, 0xBB},
|
628
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x6A, 0x99, 0xA5, 0xA9, 0xAA, 0xAD, 0xAE, 0xB9, 0xBA, 0xBE},
|
629
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x6A, 0x99, 0xA5, 0xA9, 0xAA, 0xAE, 0xBA, 0xBE},
|
630
|
-
{0x55, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAE, 0xBA, 0xBE},
|
631
|
-
{0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x9A, 0xA6, 0xA9, 0xAA, 0xAB, 0xAE, 0xBA},
|
632
|
-
{0x40, 0x45, 0x51, 0x54, 0x55, 0x85, 0x91, 0x94, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
633
|
-
{0x41, 0x45, 0x51, 0x55, 0x56, 0x85, 0x91, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xAA, 0xEA},
|
634
|
-
{0x41, 0x45, 0x51, 0x55, 0x56, 0x85, 0x91, 0x95, 0x96, 0x9A, 0xA6, 0xAA, 0xD6, 0xEA},
|
635
|
-
{0x41, 0x45, 0x51, 0x55, 0x56, 0x86, 0x92, 0x95, 0x96, 0x97, 0x9A, 0xA6, 0xAA, 0xAB, 0xD6, 0xEA, 0xEB},
|
636
|
-
{0x44, 0x45, 0x54, 0x55, 0x59, 0x85, 0x94, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA9, 0xAA, 0xEA},
|
637
|
-
{0x45, 0x55, 0x85, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xDA, 0xEA},
|
638
|
-
{0x45, 0x55, 0x56, 0x85, 0x95, 0x96, 0x99, 0x9A, 0xA6, 0xAA, 0xDA, 0xEA},
|
639
|
-
{0x45, 0x55, 0x56, 0x86, 0x95, 0x96, 0x9A, 0x9B, 0xA6, 0xAA, 0xAB, 0xDA, 0xEA, 0xEB},
|
640
|
-
{0x44, 0x45, 0x54, 0x55, 0x59, 0x85, 0x94, 0x95, 0x99, 0x9A, 0xA9, 0xAA, 0xD9, 0xEA},
|
641
|
-
{0x45, 0x55, 0x59, 0x85, 0x95, 0x96, 0x99, 0x9A, 0xA9, 0xAA, 0xDA, 0xEA},
|
642
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x85, 0x95, 0x96, 0x99, 0x9A, 0xAA, 0xDA, 0xEA},
|
643
|
-
{0x45, 0x55, 0x56, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0x9B, 0xA6, 0xAA, 0xAB, 0xDA, 0xEA, 0xEB},
|
644
|
-
{0x44, 0x45, 0x54, 0x55, 0x59, 0x89, 0x95, 0x98, 0x99, 0x9A, 0x9D, 0xA9, 0xAA, 0xAE, 0xD9, 0xEA, 0xEE},
|
645
|
-
{0x45, 0x55, 0x59, 0x89, 0x95, 0x99, 0x9A, 0x9E, 0xA9, 0xAA, 0xAE, 0xDA, 0xEA, 0xEE},
|
646
|
-
{0x45, 0x55, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0x9E, 0xA9, 0xAA, 0xAE, 0xDA, 0xEA, 0xEE},
|
647
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0x9B, 0x9E, 0xAA, 0xAB, 0xAE, 0xDA, 0xEA, 0xEF},
|
648
|
-
{0x50, 0x51, 0x54, 0x55, 0x65, 0x91, 0x94, 0x95, 0x96, 0x99, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
649
|
-
{0x51, 0x55, 0x91, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xE6, 0xEA},
|
650
|
-
{0x51, 0x55, 0x56, 0x91, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xAA, 0xE6, 0xEA},
|
651
|
-
{0x51, 0x55, 0x56, 0x92, 0x95, 0x96, 0x9A, 0xA6, 0xA7, 0xAA, 0xAB, 0xE6, 0xEA, 0xEB},
|
652
|
-
{0x54, 0x55, 0x94, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xE9, 0xEA},
|
653
|
-
{0x55, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
654
|
-
{0x55, 0x56, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
655
|
-
{0x55, 0x56, 0x95, 0x96, 0x9A, 0xA6, 0xAA, 0xAB, 0xEA, 0xEB},
|
656
|
-
{0x54, 0x55, 0x59, 0x94, 0x95, 0x99, 0x9A, 0xA5, 0xA9, 0xAA, 0xE9, 0xEA},
|
657
|
-
{0x55, 0x59, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
658
|
-
{0x45, 0x55, 0x56, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
659
|
-
{0x45, 0x55, 0x56, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0xA6, 0xAA, 0xAB, 0xEA, 0xEB},
|
660
|
-
{0x54, 0x55, 0x59, 0x95, 0x98, 0x99, 0x9A, 0xA9, 0xAA, 0xAD, 0xAE, 0xE9, 0xEA, 0xEE},
|
661
|
-
{0x55, 0x59, 0x95, 0x99, 0x9A, 0xA9, 0xAA, 0xAE, 0xEA, 0xEE},
|
662
|
-
{0x45, 0x55, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0xA9, 0xAA, 0xAE, 0xEA, 0xEE},
|
663
|
-
{0x55, 0x56, 0x59, 0x5A, 0x95, 0x96, 0x99, 0x9A, 0xAA, 0xAB, 0xAE, 0xEA, 0xEF},
|
664
|
-
{0x50, 0x51, 0x54, 0x55, 0x65, 0x91, 0x94, 0x95, 0xA5, 0xA6, 0xA9, 0xAA, 0xE5, 0xEA},
|
665
|
-
{0x51, 0x55, 0x65, 0x91, 0x95, 0x96, 0xA5, 0xA6, 0xA9, 0xAA, 0xE6, 0xEA},
|
666
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x91, 0x95, 0x96, 0xA5, 0xA6, 0xAA, 0xE6, 0xEA},
|
667
|
-
{0x51, 0x55, 0x56, 0x66, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xA7, 0xAA, 0xAB, 0xE6, 0xEA, 0xEB},
|
668
|
-
{0x54, 0x55, 0x65, 0x94, 0x95, 0x99, 0xA5, 0xA6, 0xA9, 0xAA, 0xE9, 0xEA},
|
669
|
-
{0x55, 0x65, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
670
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
671
|
-
{0x51, 0x55, 0x56, 0x66, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xAA, 0xAB, 0xEA, 0xEB},
|
672
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x94, 0x95, 0x99, 0xA5, 0xA9, 0xAA, 0xE9, 0xEA},
|
673
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
674
|
-
{0x55, 0x56, 0x59, 0x65, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xEA},
|
675
|
-
{0x55, 0x56, 0x5A, 0x66, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAB, 0xEA, 0xEB},
|
676
|
-
{0x54, 0x55, 0x59, 0x69, 0x95, 0x99, 0x9A, 0xA5, 0xA9, 0xAA, 0xAD, 0xAE, 0xE9, 0xEA, 0xEE},
|
677
|
-
{0x54, 0x55, 0x59, 0x69, 0x95, 0x99, 0x9A, 0xA5, 0xA9, 0xAA, 0xAE, 0xEA, 0xEE},
|
678
|
-
{0x55, 0x59, 0x5A, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAE, 0xEA, 0xEE},
|
679
|
-
{0x55, 0x56, 0x59, 0x5A, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA6, 0xA9, 0xAA, 0xAB, 0xAE, 0xEA},
|
680
|
-
{0x50, 0x51, 0x54, 0x55, 0x65, 0x95, 0xA1, 0xA4, 0xA5, 0xA6, 0xA9, 0xAA, 0xB5, 0xBA, 0xE5, 0xEA, 0xFA},
|
681
|
-
{0x51, 0x55, 0x65, 0x95, 0xA1, 0xA5, 0xA6, 0xA9, 0xAA, 0xB6, 0xBA, 0xE6, 0xEA, 0xFA},
|
682
|
-
{0x51, 0x55, 0x65, 0x66, 0x95, 0x96, 0xA5, 0xA6, 0xA9, 0xAA, 0xB6, 0xBA, 0xE6, 0xEA, 0xFA},
|
683
|
-
{0x51, 0x55, 0x56, 0x65, 0x66, 0x95, 0x96, 0xA5, 0xA6, 0xA7, 0xAA, 0xAB, 0xB6, 0xBA, 0xE6, 0xEA, 0xFB},
|
684
|
-
{0x54, 0x55, 0x65, 0x95, 0xA4, 0xA5, 0xA6, 0xA9, 0xAA, 0xB9, 0xBA, 0xE9, 0xEA, 0xFA},
|
685
|
-
{0x55, 0x65, 0x95, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA, 0xEA, 0xFA},
|
686
|
-
{0x51, 0x55, 0x65, 0x66, 0x95, 0x96, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA, 0xEA, 0xFA},
|
687
|
-
{0x55, 0x56, 0x65, 0x66, 0x95, 0x96, 0xA5, 0xA6, 0xAA, 0xAB, 0xBA, 0xEA, 0xFB},
|
688
|
-
{0x54, 0x55, 0x65, 0x69, 0x95, 0x99, 0xA5, 0xA6, 0xA9, 0xAA, 0xB9, 0xBA, 0xE9, 0xEA, 0xFA},
|
689
|
-
{0x54, 0x55, 0x65, 0x69, 0x95, 0x99, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA, 0xEA, 0xFA},
|
690
|
-
{0x55, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xBA, 0xEA, 0xFA},
|
691
|
-
{0x55, 0x56, 0x65, 0x66, 0x6A, 0x95, 0x96, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAB, 0xBA, 0xEA},
|
692
|
-
{0x54, 0x55, 0x59, 0x65, 0x69, 0x95, 0x99, 0xA5, 0xA9, 0xAA, 0xAD, 0xAE, 0xB9, 0xBA, 0xE9, 0xEA, 0xFE},
|
693
|
-
{0x55, 0x59, 0x65, 0x69, 0x95, 0x99, 0xA5, 0xA9, 0xAA, 0xAE, 0xBA, 0xEA, 0xFE},
|
694
|
-
{0x55, 0x59, 0x65, 0x69, 0x6A, 0x95, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAE, 0xBA, 0xEA},
|
695
|
-
{0x55, 0x56, 0x59, 0x5A, 0x65, 0x66, 0x69, 0x6A, 0x95, 0x96, 0x99, 0x9A, 0xA5, 0xA6, 0xA9, 0xAA, 0xAB, 0xAE, 0xBA, 0xEA},};
|
696
|
-
LatticePoint4D[] latticePoints = new LatticePoint4D[256];
|
697
|
-
for (int i = 0; i < 256; i++) {
|
698
|
-
int cx = ((i) & 3) - 1;
|
699
|
-
int cy = ((i >> 2) & 3) - 1;
|
700
|
-
int cz = ((i >> 4) & 3) - 1;
|
701
|
-
int cw = ((i >> 6) & 3) - 1;
|
702
|
-
latticePoints[i] = new LatticePoint4D(cx, cy, cz, cw);
|
703
|
-
}
|
704
|
-
for (int i = 0; i < 256; i++) {
|
705
|
-
LOOKUP_4D[i] = new LatticePoint4D[lookup4DPregen[i].length];
|
706
|
-
for (int j = 0; j < lookup4DPregen[i].length; j++) {
|
707
|
-
LOOKUP_4D[i][j] = latticePoints[lookup4DPregen[i][j]];
|
708
|
-
}
|
709
|
-
}
|
710
|
-
}
|
711
|
-
|
712
|
-
@Override
|
713
|
-
public float noise(float x, float y){
|
714
|
-
return (float)noise2_XBeforeY(x, y);
|
715
|
-
}
|
716
|
-
|
717
|
-
@Override
|
718
|
-
public float noise(float x, float y, float z) {
|
719
|
-
return (float)noise3_XYBeforeZ(x, y, z);
|
720
|
-
}
|
721
|
-
|
722
|
-
@Override
|
723
|
-
public float noise(float x, float y, float z, float w) {
|
724
|
-
return (float)noise4_XZBeforeYW(x, y, z, w);
|
725
|
-
}
|
726
|
-
|
727
|
-
@Override
|
728
|
-
public void noiseMode(NoiseMode mode) {
|
729
|
-
|
730
|
-
}
|
731
|
-
|
732
|
-
@Override
|
733
|
-
public void noiseSeed(long seed) {
|
734
|
-
|
735
|
-
}
|
736
|
-
|
737
|
-
private static class LatticePoint2D {
|
738
|
-
|
739
|
-
int xsv, ysv;
|
740
|
-
double dx, dy;
|
741
|
-
|
742
|
-
public LatticePoint2D(int xsv, int ysv) {
|
743
|
-
this.xsv = xsv;
|
744
|
-
this.ysv = ysv;
|
745
|
-
double ssv = (xsv + ysv) * -0.211324865405187;
|
746
|
-
this.dx = -xsv - ssv;
|
747
|
-
this.dy = -ysv - ssv;
|
748
|
-
}
|
749
|
-
}
|
750
|
-
|
751
|
-
private static class LatticePoint3D {
|
752
|
-
|
753
|
-
public double dxr, dyr, dzr;
|
754
|
-
public int xrv, yrv, zrv;
|
755
|
-
LatticePoint3D nextOnFailure, nextOnSuccess;
|
756
|
-
|
757
|
-
public LatticePoint3D(int xrv, int yrv, int zrv, int lattice) {
|
758
|
-
this.dxr = -xrv + lattice * 0.5;
|
759
|
-
this.dyr = -yrv + lattice * 0.5;
|
760
|
-
this.dzr = -zrv + lattice * 0.5;
|
761
|
-
this.xrv = xrv + lattice * 1024;
|
762
|
-
this.yrv = yrv + lattice * 1024;
|
763
|
-
this.zrv = zrv + lattice * 1024;
|
764
|
-
}
|
765
|
-
}
|
766
|
-
|
767
|
-
private static class LatticePoint4D {
|
768
|
-
|
769
|
-
int xsv, ysv, zsv, wsv;
|
770
|
-
double dx, dy, dz, dw;
|
771
|
-
|
772
|
-
public LatticePoint4D(int xsv, int ysv, int zsv, int wsv) {
|
773
|
-
this.xsv = xsv;
|
774
|
-
this.ysv = ysv;
|
775
|
-
this.zsv = zsv;
|
776
|
-
this.wsv = wsv;
|
777
|
-
double ssv = (xsv + ysv + zsv + wsv) * -0.138196601125011;
|
778
|
-
this.dx = -xsv - ssv;
|
779
|
-
this.dy = -ysv - ssv;
|
780
|
-
this.dz = -zsv - ssv;
|
781
|
-
this.dw = -wsv - ssv;
|
782
|
-
}
|
783
|
-
}
|
784
|
-
|
785
|
-
/*
|
786
|
-
* Gradients
|
787
|
-
*/
|
788
|
-
private static class Grad2 {
|
789
|
-
|
790
|
-
double dx, dy;
|
791
|
-
|
792
|
-
public Grad2(double dx, double dy) {
|
793
|
-
this.dx = dx;
|
794
|
-
this.dy = dy;
|
795
|
-
}
|
796
|
-
}
|
797
|
-
|
798
|
-
private static class Grad3 {
|
799
|
-
|
800
|
-
double dx, dy, dz;
|
801
|
-
|
802
|
-
public Grad3(double dx, double dy, double dz) {
|
803
|
-
this.dx = dx;
|
804
|
-
this.dy = dy;
|
805
|
-
this.dz = dz;
|
806
|
-
}
|
807
|
-
}
|
808
|
-
|
809
|
-
private static class Grad4 {
|
810
|
-
|
811
|
-
double dx, dy, dz, dw;
|
812
|
-
|
813
|
-
public Grad4(double dx, double dy, double dz, double dw) {
|
814
|
-
this.dx = dx;
|
815
|
-
this.dy = dy;
|
816
|
-
this.dz = dz;
|
817
|
-
this.dw = dw;
|
818
|
-
}
|
819
|
-
}
|
820
|
-
|
821
|
-
private static final double N2 = 0.05481866495625118;
|
822
|
-
private static final double N3 = 0.2781926117527186;
|
823
|
-
private static final double N4 = 0.11127401889945551;
|
824
|
-
private static final Grad2[] GRADIENTS_2D;
|
825
|
-
private static final Grad3[] GRADIENTS_3D;
|
826
|
-
private static final Grad4[] GRADIENTS_4D;
|
827
|
-
|
828
|
-
static {
|
829
|
-
|
830
|
-
GRADIENTS_2D = new Grad2[PSIZE];
|
831
|
-
Grad2[] grad2 = {
|
832
|
-
new Grad2(0.130526192220052, 0.99144486137381),
|
833
|
-
new Grad2(0.38268343236509, 0.923879532511287),
|
834
|
-
new Grad2(0.608761429008721, 0.793353340291235),
|
835
|
-
new Grad2(0.793353340291235, 0.608761429008721),
|
836
|
-
new Grad2(0.923879532511287, 0.38268343236509),
|
837
|
-
new Grad2(0.99144486137381, 0.130526192220051),
|
838
|
-
new Grad2(0.99144486137381, -0.130526192220051),
|
839
|
-
new Grad2(0.923879532511287, -0.38268343236509),
|
840
|
-
new Grad2(0.793353340291235, -0.60876142900872),
|
841
|
-
new Grad2(0.608761429008721, -0.793353340291235),
|
842
|
-
new Grad2(0.38268343236509, -0.923879532511287),
|
843
|
-
new Grad2(0.130526192220052, -0.99144486137381),
|
844
|
-
new Grad2(-0.130526192220052, -0.99144486137381),
|
845
|
-
new Grad2(-0.38268343236509, -0.923879532511287),
|
846
|
-
new Grad2(-0.608761429008721, -0.793353340291235),
|
847
|
-
new Grad2(-0.793353340291235, -0.608761429008721),
|
848
|
-
new Grad2(-0.923879532511287, -0.38268343236509),
|
849
|
-
new Grad2(-0.99144486137381, -0.130526192220052),
|
850
|
-
new Grad2(-0.99144486137381, 0.130526192220051),
|
851
|
-
new Grad2(-0.923879532511287, 0.38268343236509),
|
852
|
-
new Grad2(-0.793353340291235, 0.608761429008721),
|
853
|
-
new Grad2(-0.608761429008721, 0.793353340291235),
|
854
|
-
new Grad2(-0.38268343236509, 0.923879532511287),
|
855
|
-
new Grad2(-0.130526192220052, 0.99144486137381)
|
856
|
-
};
|
857
|
-
Grad2[] grad2XBeforeY = new Grad2[grad2.length];
|
858
|
-
for (Grad2 grad21 : grad2) {
|
859
|
-
grad21.dx /= N2;
|
860
|
-
grad21.dy /= N2;
|
861
|
-
}
|
862
|
-
for (int i = 0; i < PSIZE; i++) {
|
863
|
-
GRADIENTS_2D[i] = grad2[i % grad2.length];
|
864
|
-
}
|
865
|
-
|
866
|
-
GRADIENTS_3D = new Grad3[PSIZE];
|
867
|
-
Grad3[] grad3 = {
|
868
|
-
new Grad3(-2.22474487139, -2.22474487139, -1.0),
|
869
|
-
new Grad3(-2.22474487139, -2.22474487139, 1.0),
|
870
|
-
new Grad3(-3.0862664687972017, -1.1721513422464978, 0.0),
|
871
|
-
new Grad3(-1.1721513422464978, -3.0862664687972017, 0.0),
|
872
|
-
new Grad3(-2.22474487139, -1.0, -2.22474487139),
|
873
|
-
new Grad3(-2.22474487139, 1.0, -2.22474487139),
|
874
|
-
new Grad3(-1.1721513422464978, 0.0, -3.0862664687972017),
|
875
|
-
new Grad3(-3.0862664687972017, 0.0, -1.1721513422464978),
|
876
|
-
new Grad3(-2.22474487139, -1.0, 2.22474487139),
|
877
|
-
new Grad3(-2.22474487139, 1.0, 2.22474487139),
|
878
|
-
new Grad3(-3.0862664687972017, 0.0, 1.1721513422464978),
|
879
|
-
new Grad3(-1.1721513422464978, 0.0, 3.0862664687972017),
|
880
|
-
new Grad3(-2.22474487139, 2.22474487139, -1.0),
|
881
|
-
new Grad3(-2.22474487139, 2.22474487139, 1.0),
|
882
|
-
new Grad3(-1.1721513422464978, 3.0862664687972017, 0.0),
|
883
|
-
new Grad3(-3.0862664687972017, 1.1721513422464978, 0.0),
|
884
|
-
new Grad3(-1.0, -2.22474487139, -2.22474487139),
|
885
|
-
new Grad3(1.0, -2.22474487139, -2.22474487139),
|
886
|
-
new Grad3(0.0, -3.0862664687972017, -1.1721513422464978),
|
887
|
-
new Grad3(0.0, -1.1721513422464978, -3.0862664687972017),
|
888
|
-
new Grad3(-1.0, -2.22474487139, 2.22474487139),
|
889
|
-
new Grad3(1.0, -2.22474487139, 2.22474487139),
|
890
|
-
new Grad3(0.0, -1.1721513422464978, 3.0862664687972017),
|
891
|
-
new Grad3(0.0, -3.0862664687972017, 1.1721513422464978),
|
892
|
-
new Grad3(-1.0, 2.22474487139, -2.22474487139),
|
893
|
-
new Grad3(1.0, 2.22474487139, -2.22474487139),
|
894
|
-
new Grad3(0.0, 1.1721513422464978, -3.0862664687972017),
|
895
|
-
new Grad3(0.0, 3.0862664687972017, -1.1721513422464978),
|
896
|
-
new Grad3(-1.0, 2.22474487139, 2.22474487139),
|
897
|
-
new Grad3(1.0, 2.22474487139, 2.22474487139),
|
898
|
-
new Grad3(0.0, 3.0862664687972017, 1.1721513422464978),
|
899
|
-
new Grad3(0.0, 1.1721513422464978, 3.0862664687972017),
|
900
|
-
new Grad3(2.22474487139, -2.22474487139, -1.0),
|
901
|
-
new Grad3(2.22474487139, -2.22474487139, 1.0),
|
902
|
-
new Grad3(1.1721513422464978, -3.0862664687972017, 0.0),
|
903
|
-
new Grad3(3.0862664687972017, -1.1721513422464978, 0.0),
|
904
|
-
new Grad3(2.22474487139, -1.0, -2.22474487139),
|
905
|
-
new Grad3(2.22474487139, 1.0, -2.22474487139),
|
906
|
-
new Grad3(3.0862664687972017, 0.0, -1.1721513422464978),
|
907
|
-
new Grad3(1.1721513422464978, 0.0, -3.0862664687972017),
|
908
|
-
new Grad3(2.22474487139, -1.0, 2.22474487139),
|
909
|
-
new Grad3(2.22474487139, 1.0, 2.22474487139),
|
910
|
-
new Grad3(1.1721513422464978, 0.0, 3.0862664687972017),
|
911
|
-
new Grad3(3.0862664687972017, 0.0, 1.1721513422464978),
|
912
|
-
new Grad3(2.22474487139, 2.22474487139, -1.0),
|
913
|
-
new Grad3(2.22474487139, 2.22474487139, 1.0),
|
914
|
-
new Grad3(3.0862664687972017, 1.1721513422464978, 0.0),
|
915
|
-
new Grad3(1.1721513422464978, 3.0862664687972017, 0.0)
|
916
|
-
};
|
917
|
-
for (Grad3 grad31 : grad3) {
|
918
|
-
grad31.dx /= N3;
|
919
|
-
grad31.dy /= N3;
|
920
|
-
grad31.dz /= N3;
|
921
|
-
}
|
922
|
-
for (int i = 0; i < PSIZE; i++) {
|
923
|
-
GRADIENTS_3D[i] = grad3[i % grad3.length];
|
924
|
-
}
|
925
|
-
|
926
|
-
GRADIENTS_4D = new Grad4[PSIZE];
|
927
|
-
Grad4[] grad4 = {
|
928
|
-
new Grad4(-0.753341017856078, -0.37968289875261624, -0.37968289875261624, -0.37968289875261624),
|
929
|
-
new Grad4(-0.7821684431180708, -0.4321472685365301, -0.4321472685365301, 0.12128480194602098),
|
930
|
-
new Grad4(-0.7821684431180708, -0.4321472685365301, 0.12128480194602098, -0.4321472685365301),
|
931
|
-
new Grad4(-0.7821684431180708, 0.12128480194602098, -0.4321472685365301, -0.4321472685365301),
|
932
|
-
new Grad4(-0.8586508742123365, -0.508629699630796, 0.044802370851755174, 0.044802370851755174),
|
933
|
-
new Grad4(-0.8586508742123365, 0.044802370851755174, -0.508629699630796, 0.044802370851755174),
|
934
|
-
new Grad4(-0.8586508742123365, 0.044802370851755174, 0.044802370851755174, -0.508629699630796),
|
935
|
-
new Grad4(-0.9982828964265062, -0.03381941603233842, -0.03381941603233842, -0.03381941603233842),
|
936
|
-
new Grad4(-0.37968289875261624, -0.753341017856078, -0.37968289875261624, -0.37968289875261624),
|
937
|
-
new Grad4(-0.4321472685365301, -0.7821684431180708, -0.4321472685365301, 0.12128480194602098),
|
938
|
-
new Grad4(-0.4321472685365301, -0.7821684431180708, 0.12128480194602098, -0.4321472685365301),
|
939
|
-
new Grad4(0.12128480194602098, -0.7821684431180708, -0.4321472685365301, -0.4321472685365301),
|
940
|
-
new Grad4(-0.508629699630796, -0.8586508742123365, 0.044802370851755174, 0.044802370851755174),
|
941
|
-
new Grad4(0.044802370851755174, -0.8586508742123365, -0.508629699630796, 0.044802370851755174),
|
942
|
-
new Grad4(0.044802370851755174, -0.8586508742123365, 0.044802370851755174, -0.508629699630796),
|
943
|
-
new Grad4(-0.03381941603233842, -0.9982828964265062, -0.03381941603233842, -0.03381941603233842),
|
944
|
-
new Grad4(-0.37968289875261624, -0.37968289875261624, -0.753341017856078, -0.37968289875261624),
|
945
|
-
new Grad4(-0.4321472685365301, -0.4321472685365301, -0.7821684431180708, 0.12128480194602098),
|
946
|
-
new Grad4(-0.4321472685365301, 0.12128480194602098, -0.7821684431180708, -0.4321472685365301),
|
947
|
-
new Grad4(0.12128480194602098, -0.4321472685365301, -0.7821684431180708, -0.4321472685365301),
|
948
|
-
new Grad4(-0.508629699630796, 0.044802370851755174, -0.8586508742123365, 0.044802370851755174),
|
949
|
-
new Grad4(0.044802370851755174, -0.508629699630796, -0.8586508742123365, 0.044802370851755174),
|
950
|
-
new Grad4(0.044802370851755174, 0.044802370851755174, -0.8586508742123365, -0.508629699630796),
|
951
|
-
new Grad4(-0.03381941603233842, -0.03381941603233842, -0.9982828964265062, -0.03381941603233842),
|
952
|
-
new Grad4(-0.37968289875261624, -0.37968289875261624, -0.37968289875261624, -0.753341017856078),
|
953
|
-
new Grad4(-0.4321472685365301, -0.4321472685365301, 0.12128480194602098, -0.7821684431180708),
|
954
|
-
new Grad4(-0.4321472685365301, 0.12128480194602098, -0.4321472685365301, -0.7821684431180708),
|
955
|
-
new Grad4(0.12128480194602098, -0.4321472685365301, -0.4321472685365301, -0.7821684431180708),
|
956
|
-
new Grad4(-0.508629699630796, 0.044802370851755174, 0.044802370851755174, -0.8586508742123365),
|
957
|
-
new Grad4(0.044802370851755174, -0.508629699630796, 0.044802370851755174, -0.8586508742123365),
|
958
|
-
new Grad4(0.044802370851755174, 0.044802370851755174, -0.508629699630796, -0.8586508742123365),
|
959
|
-
new Grad4(-0.03381941603233842, -0.03381941603233842, -0.03381941603233842, -0.9982828964265062),
|
960
|
-
new Grad4(-0.6740059517812944, -0.3239847771997537, -0.3239847771997537, 0.5794684678643381),
|
961
|
-
new Grad4(-0.7504883828755602, -0.4004672082940195, 0.15296486218853164, 0.5029860367700724),
|
962
|
-
new Grad4(-0.7504883828755602, 0.15296486218853164, -0.4004672082940195, 0.5029860367700724),
|
963
|
-
new Grad4(-0.8828161875373585, 0.08164729285680945, 0.08164729285680945, 0.4553054119602712),
|
964
|
-
new Grad4(-0.4553054119602712, -0.08164729285680945, -0.08164729285680945, 0.8828161875373585),
|
965
|
-
new Grad4(-0.5029860367700724, -0.15296486218853164, 0.4004672082940195, 0.7504883828755602),
|
966
|
-
new Grad4(-0.5029860367700724, 0.4004672082940195, -0.15296486218853164, 0.7504883828755602),
|
967
|
-
new Grad4(-0.5794684678643381, 0.3239847771997537, 0.3239847771997537, 0.6740059517812944),
|
968
|
-
new Grad4(-0.3239847771997537, -0.6740059517812944, -0.3239847771997537, 0.5794684678643381),
|
969
|
-
new Grad4(-0.4004672082940195, -0.7504883828755602, 0.15296486218853164, 0.5029860367700724),
|
970
|
-
new Grad4(0.15296486218853164, -0.7504883828755602, -0.4004672082940195, 0.5029860367700724),
|
971
|
-
new Grad4(0.08164729285680945, -0.8828161875373585, 0.08164729285680945, 0.4553054119602712),
|
972
|
-
new Grad4(-0.08164729285680945, -0.4553054119602712, -0.08164729285680945, 0.8828161875373585),
|
973
|
-
new Grad4(-0.15296486218853164, -0.5029860367700724, 0.4004672082940195, 0.7504883828755602),
|
974
|
-
new Grad4(0.4004672082940195, -0.5029860367700724, -0.15296486218853164, 0.7504883828755602),
|
975
|
-
new Grad4(0.3239847771997537, -0.5794684678643381, 0.3239847771997537, 0.6740059517812944),
|
976
|
-
new Grad4(-0.3239847771997537, -0.3239847771997537, -0.6740059517812944, 0.5794684678643381),
|
977
|
-
new Grad4(-0.4004672082940195, 0.15296486218853164, -0.7504883828755602, 0.5029860367700724),
|
978
|
-
new Grad4(0.15296486218853164, -0.4004672082940195, -0.7504883828755602, 0.5029860367700724),
|
979
|
-
new Grad4(0.08164729285680945, 0.08164729285680945, -0.8828161875373585, 0.4553054119602712),
|
980
|
-
new Grad4(-0.08164729285680945, -0.08164729285680945, -0.4553054119602712, 0.8828161875373585),
|
981
|
-
new Grad4(-0.15296486218853164, 0.4004672082940195, -0.5029860367700724, 0.7504883828755602),
|
982
|
-
new Grad4(0.4004672082940195, -0.15296486218853164, -0.5029860367700724, 0.7504883828755602),
|
983
|
-
new Grad4(0.3239847771997537, 0.3239847771997537, -0.5794684678643381, 0.6740059517812944),
|
984
|
-
new Grad4(-0.6740059517812944, -0.3239847771997537, 0.5794684678643381, -0.3239847771997537),
|
985
|
-
new Grad4(-0.7504883828755602, -0.4004672082940195, 0.5029860367700724, 0.15296486218853164),
|
986
|
-
new Grad4(-0.7504883828755602, 0.15296486218853164, 0.5029860367700724, -0.4004672082940195),
|
987
|
-
new Grad4(-0.8828161875373585, 0.08164729285680945, 0.4553054119602712, 0.08164729285680945),
|
988
|
-
new Grad4(-0.4553054119602712, -0.08164729285680945, 0.8828161875373585, -0.08164729285680945),
|
989
|
-
new Grad4(-0.5029860367700724, -0.15296486218853164, 0.7504883828755602, 0.4004672082940195),
|
990
|
-
new Grad4(-0.5029860367700724, 0.4004672082940195, 0.7504883828755602, -0.15296486218853164),
|
991
|
-
new Grad4(-0.5794684678643381, 0.3239847771997537, 0.6740059517812944, 0.3239847771997537),
|
992
|
-
new Grad4(-0.3239847771997537, -0.6740059517812944, 0.5794684678643381, -0.3239847771997537),
|
993
|
-
new Grad4(-0.4004672082940195, -0.7504883828755602, 0.5029860367700724, 0.15296486218853164),
|
994
|
-
new Grad4(0.15296486218853164, -0.7504883828755602, 0.5029860367700724, -0.4004672082940195),
|
995
|
-
new Grad4(0.08164729285680945, -0.8828161875373585, 0.4553054119602712, 0.08164729285680945),
|
996
|
-
new Grad4(-0.08164729285680945, -0.4553054119602712, 0.8828161875373585, -0.08164729285680945),
|
997
|
-
new Grad4(-0.15296486218853164, -0.5029860367700724, 0.7504883828755602, 0.4004672082940195),
|
998
|
-
new Grad4(0.4004672082940195, -0.5029860367700724, 0.7504883828755602, -0.15296486218853164),
|
999
|
-
new Grad4(0.3239847771997537, -0.5794684678643381, 0.6740059517812944, 0.3239847771997537),
|
1000
|
-
new Grad4(-0.3239847771997537, -0.3239847771997537, 0.5794684678643381, -0.6740059517812944),
|
1001
|
-
new Grad4(-0.4004672082940195, 0.15296486218853164, 0.5029860367700724, -0.7504883828755602),
|
1002
|
-
new Grad4(0.15296486218853164, -0.4004672082940195, 0.5029860367700724, -0.7504883828755602),
|
1003
|
-
new Grad4(0.08164729285680945, 0.08164729285680945, 0.4553054119602712, -0.8828161875373585),
|
1004
|
-
new Grad4(-0.08164729285680945, -0.08164729285680945, 0.8828161875373585, -0.4553054119602712),
|
1005
|
-
new Grad4(-0.15296486218853164, 0.4004672082940195, 0.7504883828755602, -0.5029860367700724),
|
1006
|
-
new Grad4(0.4004672082940195, -0.15296486218853164, 0.7504883828755602, -0.5029860367700724),
|
1007
|
-
new Grad4(0.3239847771997537, 0.3239847771997537, 0.6740059517812944, -0.5794684678643381),
|
1008
|
-
new Grad4(-0.6740059517812944, 0.5794684678643381, -0.3239847771997537, -0.3239847771997537),
|
1009
|
-
new Grad4(-0.7504883828755602, 0.5029860367700724, -0.4004672082940195, 0.15296486218853164),
|
1010
|
-
new Grad4(-0.7504883828755602, 0.5029860367700724, 0.15296486218853164, -0.4004672082940195),
|
1011
|
-
new Grad4(-0.8828161875373585, 0.4553054119602712, 0.08164729285680945, 0.08164729285680945),
|
1012
|
-
new Grad4(-0.4553054119602712, 0.8828161875373585, -0.08164729285680945, -0.08164729285680945),
|
1013
|
-
new Grad4(-0.5029860367700724, 0.7504883828755602, -0.15296486218853164, 0.4004672082940195),
|
1014
|
-
new Grad4(-0.5029860367700724, 0.7504883828755602, 0.4004672082940195, -0.15296486218853164),
|
1015
|
-
new Grad4(-0.5794684678643381, 0.6740059517812944, 0.3239847771997537, 0.3239847771997537),
|
1016
|
-
new Grad4(-0.3239847771997537, 0.5794684678643381, -0.6740059517812944, -0.3239847771997537),
|
1017
|
-
new Grad4(-0.4004672082940195, 0.5029860367700724, -0.7504883828755602, 0.15296486218853164),
|
1018
|
-
new Grad4(0.15296486218853164, 0.5029860367700724, -0.7504883828755602, -0.4004672082940195),
|
1019
|
-
new Grad4(0.08164729285680945, 0.4553054119602712, -0.8828161875373585, 0.08164729285680945),
|
1020
|
-
new Grad4(-0.08164729285680945, 0.8828161875373585, -0.4553054119602712, -0.08164729285680945),
|
1021
|
-
new Grad4(-0.15296486218853164, 0.7504883828755602, -0.5029860367700724, 0.4004672082940195),
|
1022
|
-
new Grad4(0.4004672082940195, 0.7504883828755602, -0.5029860367700724, -0.15296486218853164),
|
1023
|
-
new Grad4(0.3239847771997537, 0.6740059517812944, -0.5794684678643381, 0.3239847771997537),
|
1024
|
-
new Grad4(-0.3239847771997537, 0.5794684678643381, -0.3239847771997537, -0.6740059517812944),
|
1025
|
-
new Grad4(-0.4004672082940195, 0.5029860367700724, 0.15296486218853164, -0.7504883828755602),
|
1026
|
-
new Grad4(0.15296486218853164, 0.5029860367700724, -0.4004672082940195, -0.7504883828755602),
|
1027
|
-
new Grad4(0.08164729285680945, 0.4553054119602712, 0.08164729285680945, -0.8828161875373585),
|
1028
|
-
new Grad4(-0.08164729285680945, 0.8828161875373585, -0.08164729285680945, -0.4553054119602712),
|
1029
|
-
new Grad4(-0.15296486218853164, 0.7504883828755602, 0.4004672082940195, -0.5029860367700724),
|
1030
|
-
new Grad4(0.4004672082940195, 0.7504883828755602, -0.15296486218853164, -0.5029860367700724),
|
1031
|
-
new Grad4(0.3239847771997537, 0.6740059517812944, 0.3239847771997537, -0.5794684678643381),
|
1032
|
-
new Grad4(0.5794684678643381, -0.6740059517812944, -0.3239847771997537, -0.3239847771997537),
|
1033
|
-
new Grad4(0.5029860367700724, -0.7504883828755602, -0.4004672082940195, 0.15296486218853164),
|
1034
|
-
new Grad4(0.5029860367700724, -0.7504883828755602, 0.15296486218853164, -0.4004672082940195),
|
1035
|
-
new Grad4(0.4553054119602712, -0.8828161875373585, 0.08164729285680945, 0.08164729285680945),
|
1036
|
-
new Grad4(0.8828161875373585, -0.4553054119602712, -0.08164729285680945, -0.08164729285680945),
|
1037
|
-
new Grad4(0.7504883828755602, -0.5029860367700724, -0.15296486218853164, 0.4004672082940195),
|
1038
|
-
new Grad4(0.7504883828755602, -0.5029860367700724, 0.4004672082940195, -0.15296486218853164),
|
1039
|
-
new Grad4(0.6740059517812944, -0.5794684678643381, 0.3239847771997537, 0.3239847771997537),
|
1040
|
-
new Grad4(0.5794684678643381, -0.3239847771997537, -0.6740059517812944, -0.3239847771997537),
|
1041
|
-
new Grad4(0.5029860367700724, -0.4004672082940195, -0.7504883828755602, 0.15296486218853164),
|
1042
|
-
new Grad4(0.5029860367700724, 0.15296486218853164, -0.7504883828755602, -0.4004672082940195),
|
1043
|
-
new Grad4(0.4553054119602712, 0.08164729285680945, -0.8828161875373585, 0.08164729285680945),
|
1044
|
-
new Grad4(0.8828161875373585, -0.08164729285680945, -0.4553054119602712, -0.08164729285680945),
|
1045
|
-
new Grad4(0.7504883828755602, -0.15296486218853164, -0.5029860367700724, 0.4004672082940195),
|
1046
|
-
new Grad4(0.7504883828755602, 0.4004672082940195, -0.5029860367700724, -0.15296486218853164),
|
1047
|
-
new Grad4(0.6740059517812944, 0.3239847771997537, -0.5794684678643381, 0.3239847771997537),
|
1048
|
-
new Grad4(0.5794684678643381, -0.3239847771997537, -0.3239847771997537, -0.6740059517812944),
|
1049
|
-
new Grad4(0.5029860367700724, -0.4004672082940195, 0.15296486218853164, -0.7504883828755602),
|
1050
|
-
new Grad4(0.5029860367700724, 0.15296486218853164, -0.4004672082940195, -0.7504883828755602),
|
1051
|
-
new Grad4(0.4553054119602712, 0.08164729285680945, 0.08164729285680945, -0.8828161875373585),
|
1052
|
-
new Grad4(0.8828161875373585, -0.08164729285680945, -0.08164729285680945, -0.4553054119602712),
|
1053
|
-
new Grad4(0.7504883828755602, -0.15296486218853164, 0.4004672082940195, -0.5029860367700724),
|
1054
|
-
new Grad4(0.7504883828755602, 0.4004672082940195, -0.15296486218853164, -0.5029860367700724),
|
1055
|
-
new Grad4(0.6740059517812944, 0.3239847771997537, 0.3239847771997537, -0.5794684678643381),
|
1056
|
-
new Grad4(0.03381941603233842, 0.03381941603233842, 0.03381941603233842, 0.9982828964265062),
|
1057
|
-
new Grad4(-0.044802370851755174, -0.044802370851755174, 0.508629699630796, 0.8586508742123365),
|
1058
|
-
new Grad4(-0.044802370851755174, 0.508629699630796, -0.044802370851755174, 0.8586508742123365),
|
1059
|
-
new Grad4(-0.12128480194602098, 0.4321472685365301, 0.4321472685365301, 0.7821684431180708),
|
1060
|
-
new Grad4(0.508629699630796, -0.044802370851755174, -0.044802370851755174, 0.8586508742123365),
|
1061
|
-
new Grad4(0.4321472685365301, -0.12128480194602098, 0.4321472685365301, 0.7821684431180708),
|
1062
|
-
new Grad4(0.4321472685365301, 0.4321472685365301, -0.12128480194602098, 0.7821684431180708),
|
1063
|
-
new Grad4(0.37968289875261624, 0.37968289875261624, 0.37968289875261624, 0.753341017856078),
|
1064
|
-
new Grad4(0.03381941603233842, 0.03381941603233842, 0.9982828964265062, 0.03381941603233842),
|
1065
|
-
new Grad4(-0.044802370851755174, 0.044802370851755174, 0.8586508742123365, 0.508629699630796),
|
1066
|
-
new Grad4(-0.044802370851755174, 0.508629699630796, 0.8586508742123365, -0.044802370851755174),
|
1067
|
-
new Grad4(-0.12128480194602098, 0.4321472685365301, 0.7821684431180708, 0.4321472685365301),
|
1068
|
-
new Grad4(0.508629699630796, -0.044802370851755174, 0.8586508742123365, -0.044802370851755174),
|
1069
|
-
new Grad4(0.4321472685365301, -0.12128480194602098, 0.7821684431180708, 0.4321472685365301),
|
1070
|
-
new Grad4(0.4321472685365301, 0.4321472685365301, 0.7821684431180708, -0.12128480194602098),
|
1071
|
-
new Grad4(0.37968289875261624, 0.37968289875261624, 0.753341017856078, 0.37968289875261624),
|
1072
|
-
new Grad4(0.03381941603233842, 0.9982828964265062, 0.03381941603233842, 0.03381941603233842),
|
1073
|
-
new Grad4(-0.044802370851755174, 0.8586508742123365, -0.044802370851755174, 0.508629699630796),
|
1074
|
-
new Grad4(-0.044802370851755174, 0.8586508742123365, 0.508629699630796, -0.044802370851755174),
|
1075
|
-
new Grad4(-0.12128480194602098, 0.7821684431180708, 0.4321472685365301, 0.4321472685365301),
|
1076
|
-
new Grad4(0.508629699630796, 0.8586508742123365, -0.044802370851755174, -0.044802370851755174),
|
1077
|
-
new Grad4(0.4321472685365301, 0.7821684431180708, -0.12128480194602098, 0.4321472685365301),
|
1078
|
-
new Grad4(0.4321472685365301, 0.7821684431180708, 0.4321472685365301, -0.12128480194602098),
|
1079
|
-
new Grad4(0.37968289875261624, 0.753341017856078, 0.37968289875261624, 0.37968289875261624),
|
1080
|
-
new Grad4(0.9982828964265062, 0.03381941603233842, 0.03381941603233842, 0.03381941603233842),
|
1081
|
-
new Grad4(0.8586508742123365, -0.044802370851755174, -0.044802370851755174, 0.508629699630796),
|
1082
|
-
new Grad4(0.8586508742123365, -0.044802370851755174, 0.508629699630796, -0.044802370851755174),
|
1083
|
-
new Grad4(0.7821684431180708, -0.12128480194602098, 0.4321472685365301, 0.4321472685365301),
|
1084
|
-
new Grad4(0.8586508742123365, 0.508629699630796, -0.044802370851755174, -0.044802370851755174),
|
1085
|
-
new Grad4(0.7821684431180708, 0.4321472685365301, -0.12128480194602098, 0.4321472685365301),
|
1086
|
-
new Grad4(0.7821684431180708, 0.4321472685365301, 0.4321472685365301, -0.12128480194602098),
|
1087
|
-
new Grad4(0.753341017856078, 0.37968289875261624, 0.37968289875261624, 0.37968289875261624)
|
1088
|
-
};
|
1089
|
-
for (Grad4 grad41 : grad4) {
|
1090
|
-
grad41.dx /= N4;
|
1091
|
-
grad41.dy /= N4;
|
1092
|
-
grad41.dz /= N4;
|
1093
|
-
grad41.dw /= N4;
|
1094
|
-
}
|
1095
|
-
for (int i = 0; i < PSIZE; i++) {
|
1096
|
-
GRADIENTS_4D[i] = grad4[i % grad4.length];
|
1097
|
-
}
|
1098
|
-
}
|
1099
|
-
}
|