More pretty images <3
[Dynartic.git] / DynImage.js
index bb3605e..4b681da 100644 (file)
@@ -125,6 +125,45 @@ DynImage.prototype.pointRing = function(sx, sy, height, layerIntensity, intensit
        }               
 }
 
+DynImage.prototype.explosion = function(width, radius, thresh, dk, ck ) {
+    for(var i = (width / 2) - (radius); i < (width / 2) + radius; ++i) {
+        for(var j = (width / 2) - (radius); j < (width / 2) + radius; ++j) {
+            if(Math.sqrt( ( ((width / 2) - i) * ((width / 2) - i) ) + ((width / 2) - j) * ((width / 2) - j) ) > radius) break;
+
+            if(Math.random() < thresh) {
+                // explode pixel
+                
+                var theta = Math.random() * Math.PI * 2;
+
+                var newX = i + ( (dk * (width / 2)) * Math.cos(theta));
+                var newY = j + ( (dk * (width / 2)) * Math.sin(theta));
+
+                var color = this.getColor(i, j);
+                this.setColor(newX, newY, color[0] + ( (Math.random() - 0.5) * ck), color[1] + ( (Math.random() - 0.5) * ck), color[2] + ( (Math.random() - 0.5) * ck));
+                this.setColor(i, j, color[0] + ( (Math.random() - 0.5) * ck), color[1] + ( (Math.random() - 0.5) * ck), color[2] + ( (Math.random() - 0.5) * ck));
+            } else {
+                var color = this.getColor(i, j);
+
+                this.setColor(i, j, (color[0] < 128) ? color[0] - 50 : color[0] + 50, (color[1] < 128) ? color[1] - 50 : color[1] + 50, (color[2] < 128) ? color[2] - 50 : color[2] + 50);
+            }
+        }
+    }
+}
+
+DynImage.prototype.prettyNoise = function(width, height, mul) {
+    for(var i = 0; i < width; ++i) {
+        for(var j = 0; j < height; ++j) {
+            var color = this.getColor(i, j);
+
+            this.setColor(i, j,
+                    color[0] + ( (Math.random() - 0.5) * mul),
+                    color[1] + ( (Math.random() - 0.5) * mul),
+                    color[2] + ( (Math.random() - 0.5) * mul)
+            );
+        }
+    }
+}
+
 DynImage.prototype.character2 = function(width, height) {
        for(var x = 0; x < width; ++x) {
                for(var y = 0; y < height; ++y) {
@@ -231,5 +270,62 @@ DynImage.prototype.border = function(width, height, bred, bgreen, bblue, mul) {
        }       
 }
 
+DynImage.prototype.antialias = function(width, height) {
+    var buf = new Buffer(width * height * 4);
+    
+    for(var i = 0; i < width; ++i) {
+        for(var j = 0; j < height; ++j) {
+            var successPixels = 0;
+            var rSum = 0, gSum = 0, bSum = 0, aSum = 0;
+            var that = this;
+
+            function run(x, y) {
+                var color = that.getColor(x, y);
+                rSum += color[0];
+                gSum += color[1];
+                bSum += color[2];
+                aSum += color[3];
+                successPixels++;
+            }
+
+            run(i, j);
+
+            if( (i - 1) >= 0) {
+               run(i - 1, j);
+
+               if( (j - 1) >= 0) {
+                  run(i - 1, j -1);
+               }
+
+               if( (j + 1) < width) {
+                   run(i -1, j + 1);
+               }
+            }
+
+            if( (i + 1) < width) {
+                run(i + 1, j);
+
+                if( (j - 1) >= 0) {
+                    run(i + 1, j - 1);
+                }
+
+                if( (j + 1) < width) {
+                    run(i + 1, j + 1);
+                }
+            }
+
+            if( (j - 1) >= 0) {
+                run(i, j - 1);
+            }
+
+            if( (j + 1) < width) {
+                run(i, j + 1);
+            }
+            
+            this.setColor(i, j, rSum / successPixels, gSum / successPixels, bSum / successPixels, aSum / successPixels);
+        }
+    }        
+}
+
 
 module.exports = DynImage;
This page took 0.025704 seconds and 4 git commands to generate.