Skip to content

Commit 437a50d

Browse files
committed
fix 0.6 typo, move build permutation table
1 parent dbe8c4b commit 437a50d

File tree

1 file changed

+24
-25
lines changed

1 file changed

+24
-25
lines changed

simplex-noise.js

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
* Better rank ordering method by Stefan Gustavson in 2012.
88
*
99
*
10-
* Copyright (C) 2012 Jonas Wagner
10+
* Copyright (C) 2016 Jonas Wagner
1111
*
1212
* Permission is hereby granted, free of charge, to any person obtaining
1313
* a copy of this software and associated documentation files (the
@@ -39,19 +39,6 @@ var G3 = 1.0 / 6.0;
3939
var F4 = (Math.sqrt(5.0) - 1.0) / 4.0;
4040
var G4 = (5.0 - Math.sqrt(5.0)) / 20.0;
4141

42-
function buildPermutationTable(random) {
43-
var i;
44-
var j = [];
45-
for (i = 0; i < 256; i++) {
46-
j.push(i);
47-
}
48-
var p = new Uint8Array(256);
49-
for (i = 0; i < 256; i++) {
50-
p[i] = j.splice(~~(random() * (256 - i)), 1);
51-
}
52-
return p;
53-
}
54-
5542
function SimplexNoise(random) {
5643
if (!random) random = Math.random;
5744
this.p = new Uint8Array(256);
@@ -242,28 +229,28 @@ SimplexNoise.prototype = {
242229
var jj = j & 255;
243230
var kk = k & 255;
244231
// Calculate the contribution from the four corners
245-
var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0;
232+
var t0 = 0.5 - x0 * x0 - y0 * y0 - z0 * z0;
246233
if (t0 < 0) n0 = 0.0;
247234
else {
248235
var gi0 = permMod12[ii + perm[jj + perm[kk]]] * 3;
249236
t0 *= t0;
250237
n0 = t0 * t0 * (grad3[gi0] * x0 + grad3[gi0 + 1] * y0 + grad3[gi0 + 2] * z0);
251238
}
252-
var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1;
239+
var t1 = 0.5 - x1 * x1 - y1 * y1 - z1 * z1;
253240
if (t1 < 0) n1 = 0.0;
254241
else {
255242
var gi1 = permMod12[ii + i1 + perm[jj + j1 + perm[kk + k1]]] * 3;
256243
t1 *= t1;
257244
n1 = t1 * t1 * (grad3[gi1] * x1 + grad3[gi1 + 1] * y1 + grad3[gi1 + 2] * z1);
258245
}
259-
var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2;
246+
var t2 = 0.5 - x2 * x2 - y2 * y2 - z2 * z2;
260247
if (t2 < 0) n2 = 0.0;
261248
else {
262249
var gi2 = permMod12[ii + i2 + perm[jj + j2 + perm[kk + k2]]] * 3;
263250
t2 *= t2;
264251
n2 = t2 * t2 * (grad3[gi2] * x2 + grad3[gi2 + 1] * y2 + grad3[gi2 + 2] * z2);
265252
}
266-
var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3;
253+
var t3 = 0.5 - x3 * x3 - y3 * y3 - z3 * z3;
267254
if (t3 < 0) n3 = 0.0;
268255
else {
269256
var gi3 = permMod12[ii + 1 + perm[jj + 1 + perm[kk + 1]]] * 3;
@@ -362,35 +349,35 @@ SimplexNoise.prototype = {
362349
var kk = k & 255;
363350
var ll = l & 255;
364351
// Calculate the contribution from the five corners
365-
var t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0;
352+
var t0 = 0.5 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0;
366353
if (t0 < 0) n0 = 0.0;
367354
else {
368355
var gi0 = (perm[ii + perm[jj + perm[kk + perm[ll]]]] % 32) * 4;
369356
t0 *= t0;
370357
n0 = t0 * t0 * (grad4[gi0] * x0 + grad4[gi0 + 1] * y0 + grad4[gi0 + 2] * z0 + grad4[gi0 + 3] * w0);
371358
}
372-
var t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1;
359+
var t1 = 0.5 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1;
373360
if (t1 < 0) n1 = 0.0;
374361
else {
375362
var gi1 = (perm[ii + i1 + perm[jj + j1 + perm[kk + k1 + perm[ll + l1]]]] % 32) * 4;
376363
t1 *= t1;
377364
n1 = t1 * t1 * (grad4[gi1] * x1 + grad4[gi1 + 1] * y1 + grad4[gi1 + 2] * z1 + grad4[gi1 + 3] * w1);
378365
}
379-
var t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2;
366+
var t2 = 0.5 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2;
380367
if (t2 < 0) n2 = 0.0;
381368
else {
382369
var gi2 = (perm[ii + i2 + perm[jj + j2 + perm[kk + k2 + perm[ll + l2]]]] % 32) * 4;
383370
t2 *= t2;
384371
n2 = t2 * t2 * (grad4[gi2] * x2 + grad4[gi2 + 1] * y2 + grad4[gi2 + 2] * z2 + grad4[gi2 + 3] * w2);
385372
}
386-
var t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3;
373+
var t3 = 0.5 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3;
387374
if (t3 < 0) n3 = 0.0;
388375
else {
389376
var gi3 = (perm[ii + i3 + perm[jj + j3 + perm[kk + k3 + perm[ll + l3]]]] % 32) * 4;
390377
t3 *= t3;
391378
n3 = t3 * t3 * (grad4[gi3] * x3 + grad4[gi3 + 1] * y3 + grad4[gi3 + 2] * z3 + grad4[gi3 + 3] * w3);
392379
}
393-
var t4 = 0.6 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4;
380+
var t4 = 0.5 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4;
394381
if (t4 < 0) n4 = 0.0;
395382
else {
396383
var gi4 = (perm[ii + 1 + perm[jj + 1 + perm[kk + 1 + perm[ll + 1]]]] % 32) * 4;
@@ -400,10 +387,22 @@ SimplexNoise.prototype = {
400387
// Sum up and scale the result to cover the range [-1,1]
401388
return 27.0 * (n0 + n1 + n2 + n3 + n4);
402389
}
403-
404-
405390
};
406391

392+
function buildPermutationTable(random) {
393+
var i;
394+
var j = [];
395+
for (i = 0; i < 256; i++) {
396+
j.push(i);
397+
}
398+
var p = new Uint8Array(256);
399+
for (i = 0; i < 256; i++) {
400+
p[i] = j.splice(~~(random() * (256 - i)), 1);
401+
}
402+
return p;
403+
}
404+
SimplexNoise._buildPermutationTable = buildPermutationTable;
405+
407406
// amd
408407
if (typeof define !== 'undefined' && define.amd) define(function() {return SimplexNoise;});
409408
// common js

0 commit comments

Comments
 (0)