Advertisement
Guest User

Untitled

a guest
Dec 6th, 2011
2,482
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 3.63 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3.     <head>
  4.         <script>
  5.             var i, j, k, A;
  6.             var u, v, w, s;
  7.             var onethird = 0.333333333;
  8.             var onesixth = 0.166666667;
  9.             var T = [0x15, 0x38, 0x32, 0x2c, 0x0d, 0x13, 0x07, 0x2a];
  10.  
  11.             // returns a value in the range of about [-0.347 .. 0.347]
  12.             function noise(x, y, z) {
  13.                 // Skew input space to relative coordinate in simplex cell
  14.                 s = (x + y + z) * onethird;
  15.                 i = fastfloor(x+s);
  16.                 j = fastfloor(y+s);
  17.                 k = fastfloor(z+s);
  18.  
  19.                 // Unskew cell origin back to (x, y , z) space
  20.                 s = (i + j + k) * onesixth;
  21.                 u = x - i + s;
  22.                 v = y - j + s;
  23.                 w = z - k + s;;
  24.  
  25.                 A = [0, 0, 0];
  26.  
  27.                 // For 3D case, the simplex shape is a slightly irregular tetrahedron.
  28.                 // Determine which simplex we're in
  29.                 hi = u >= w ? u >= v ? 0 : 1 : v >= w ? 1 : 2;
  30.                 lo = u < w ? u < v ? 0 : 1 : v < w ? 1 : 2;
  31.  
  32.                return kay(hi) + kay(3 - hi - lo) + kay(lo) + kay(0);
  33.            }
  34.  
  35.            function fastfloor(n) {
  36.                return Math.floor(n);
  37.            }
  38.  
  39.            function kay(a) {
  40.                s = (A[0] + A[1] + A[2]) * onesixth;
  41.                x = u - A[0] + s;
  42.                y = v - A[1] + s;
  43.                z = w - A[2] + s;
  44.                t = 0.6 - x * x - y * y - z * z;
  45.                h = shuffle(i + A[0], j + A[1], k + A[2]);
  46.                A[a]++;
  47.                if (t < 0) return 0;
  48.                b5 = h >> 5 & 1;
  49.                 b4 = h >> 4 & 1;
  50.                 b3 = h >> 3 & 1;
  51.                 b2 = h >> 2 & 1;
  52.                 b = h & 3;
  53.                 p = b == 1 ? x : b == 2 ? y : z;
  54.                 q = b == 1 ? y : b == 2 ? z : x;
  55.                 r = b == 1 ? z : b == 2 ? x : y;
  56.                 p = b5 == b3 ? -p : p;
  57.                 q = b5 == b4 ? -q: q;
  58.                 r = b5 != (b4^b3) ? -r : r;
  59.                 t *= t;
  60.                 return 8 * t * t * (p + (b == 0 ? q + r : b2 == 0 ? q : r));
  61.             }
  62.  
  63.             function shuffle(i, j, k) {
  64.                 return bee(i, j, k, 0) + bee(j, k, i, 1) + bee(k, i, j, 2) + bee(i, j, k, 3) +
  65.                 bee(j, k, i, 4) + bee(k, i, j, 5) + bee(i, j, k, 6) + bee(j, k, i, 7);
  66.             }
  67.  
  68.             function bee(i, j, k, B) {
  69.                 if (arguments.length == 2)
  70.                     return bee2(i, j);
  71.                 return T[bee(i, B) << 2 | bee(j, B) << 1 | bee(k, B)];
  72.            }
  73.  
  74.            function bee2(N, B) {
  75.                return N >> B & 1;
  76.             }
  77.            
  78.             window.onload = function() {
  79.                 var context = document.getElementById("canvas").getContext("2d");
  80.                 var imageData = context.getImageData(0, 0, 512, 512);
  81.                 for(var y = 0; y < imageData.height; y++) {
  82.                    for(var x = 0; x < imageData.width; x++) {
  83.                        var index = ((imageData.width * y) + x) * 4;
  84.                        var color = noise(x, y, 0) * 255;
  85.                        imageData.data[index + 0] = color;
  86.                        imageData.data[index + 1] = color;
  87.                        imageData.data[index + 2] = color;
  88.                        imageData.data[index + 3] = 255;
  89.                    }
  90.                }
  91.                context.putImageData(imageData, 0, 0);
  92.            };
  93.        </script>
  94.     </head>
  95.     <body>
  96.         <canvas id="canvas" width="512" height="512"></canvas>
  97.     </body>
  98. </html>
  99.  
  100.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement