make more constants controllable
authorAlyssa Rosenzweig <bobbybee@users.noreply.github.com>
Thu, 28 May 2015 13:23:23 +0000 (09:23 -0400)
committerAlyssa Rosenzweig <bobbybee@users.noreply.github.com>
Thu, 28 May 2015 13:23:23 +0000 (09:23 -0400)
DynImage.js
main.js

index 21dff33..098db1e 100644 (file)
@@ -91,7 +91,7 @@ DynImage.prototype.fillColor = function(r, g, b, a) {
 // starting with a point, that point is raised a certain, specified amount (this is of course an analogy)
 // this causes the alpha value at that point to be raised to this value,
 // and ripples the effect the nearby pixels as well
-DynImage.prototype.pointRing = function(sx, sy, height, layerIntensity) {
+DynImage.prototype.pointRing = function(sx, sy, height, layerIntensity, intensityMultiplier) {
        var rippleAmount = (255 / this.lesserDimension) * height;
 
        var usedPoints = {};
@@ -108,7 +108,7 @@ DynImage.prototype.pointRing = function(sx, sy, height, layerIntensity) {
                        usedPoints[x+";"+y] = 1;
        
                        var distance = Math.sqrt( ( (sx - x) * (sx - x) ) + ( (sy - y) * (sy - y) ) );
-                       var intensity = (height - distance) / height; // linear function.
+                       var intensity = Math.log(height - distance) * intensityMultiplier; // linear function.
                        // this outputs a value 0-1, where 1 is the full effect of pulling and 0 is no effect
                        // in the future, we may want a smoother curve
                        // TODO: find alternative that works better
@@ -194,13 +194,13 @@ DynImage.prototype.borderPoint = function(x, y, bred, bgreen, bblue, percent) {
 
        // weighted average
 
-       this.setColor( ((bred * percent) + (color[0] * (200 - percent))) / 2,
-                       ((bgreen * percent) + (color[1] * (200 - percent))) / 2,
-                       ((bblue * percent) + (color[2] * (200 - percent))) / 2);
+       this.setColor( ((bred * percent) + (color[0] * (100 - percent))) / 200,
+                       ((bgreen * percent) + (color[1] * (100 - percent))) / 200,
+                       ((bblue * percent) + (color[2] * (100 - percent))) / 200);
 }
 
 DynImage.prototype.border = function(width, height, bred, bgreen, bblue, mul) {
-       var borderIterations = 10;
+       var borderIterations = mul;
 
        for(var i = 0; i < borderIterations; ++i) {
                for(var x = i; x < (width - i); ++x) {
diff --git a/main.js b/main.js
index 64e897b..8a8032e 100644 (file)
--- a/main.js
+++ b/main.js
@@ -14,7 +14,7 @@ var DynImage = require("./DynImage");
 var width = process.argv[2]*1;
 var height = process.argv[3]*1;
 
-function pretty(name, ired, igreen, iblue, ringConstant, stainConstant, stainSize, waveConstant, contrastThreshold, bred, bgreen, bblue) {
+function pretty(name, ired, igreen, iblue, ringConstant, stainConstant, stainSize, waveConstant, contrastThreshold, bred, bgreen, bblue, intensityConstant, borderConstant) {
        // buffer size is: width * height * 4 (RGBA is 4 bytes)
        var buffer = new Buffer(width * height * 4);
 
@@ -33,11 +33,11 @@ function pretty(name, ired, igreen, iblue, ringConstant, stainConstant, stainSiz
 
        dynimage.punchWave(width / 2, height / 2, width * stainSize, height * stainSize, Math.floor(stainConstant), width / 3, waveConstant);
 
-       dynimage.pointRing(width / 2, height / 2, width, ringConstant);
+       dynimage.pointRing(width / 2, height / 2, width, ringConstant, intensityConstant);
 
        dynimage.recontrast(contrastThreshold, Math.floor(Math.random() * 60));
 
-       dynimage.border(width, height, bred, bgreen, bblue, 10);
+       dynimage.border(width, height, bred, bgreen, bblue, borderConstant);
        
        var png = new Png(buffer, width, height, 'rgba');
        png.encode(function(image) {
@@ -45,4 +45,4 @@ function pretty(name, ired, igreen, iblue, ringConstant, stainConstant, stainSiz
                        });
 }
 
-pretty("output", Math.random() * 255, Math.random() * 255, Math.random() * 255, Math.random() * 6, Math.random() * 170, 0.5 + (0.5*Math.random()), Math.floor(Math.random() * 20), 50 + (Math.random() * 150), Math.random() * 255, Math.random() * 255, Math.random() * 255);
+pretty("output", Math.random() * 255, Math.random() * 255, Math.random() * 255, Math.random() * 6, Math.random() * 170, 0.5 + (0.5*Math.random()), Math.floor(Math.random() * 20), 50 + (Math.random() * 150), Math.random() * 255, Math.random() * 255, Math.random() * 255, Math.random(), Math.random() * 20);
This page took 0.045088 seconds and 4 git commands to generate.