1. //vapor_140816b

     
  2. //vapor_140816a
    ArrayList<PointPosition> pointPosition = new ArrayList();
    boolean alternate = false;
    int threshold = 135;
    color pColor;
    int width = 500,
        height = 750;
    int[] directions = {
      (width*-1)-1,
      (width*-1)+1,
      width+1,
      width-1
    };

    void setup(){
      background(0);
      size(width,height);
      frameRate(24);
      startScatter();
    }

    void draw(){
      if (frameCount % 48 == 0) {
        pColor = color(
                  red(int(map(randomNormal(),0,1,0,135))),
                  green(int(map(randomNormal(),0,1,0,135))),
                  blue(int(map(randomNormal(),0,1,0,135)))
                 );
      }
      fill(pColor,5);
      stroke(pColor,10);
      rect(-2,-2,width+2,height+2);
      translate(width/2,height/2);
      stroke(255,100);
      int i = 0;
      for(PointPosition p:pointPosition){
        i++;
        p.tpos.x = p.tpos.x+cos(millis()/3)*width/(i+25);
        p.tpos.y = p.tpos.y+sin(millis())*width/(i+25);
        p.update();
        p.render();
      }
      alterPixels();
      threshold = setThreshold(threshold,2,254);
    }

    void alterPixels(){
      loadPixels();
        for (int k=width+1; k<pixels.length-width-1; k++) {
          int pModifier = selectRandom(directions);
          if (brightness(pixels[k]) == threshold) {
            pixels[k] = pixels[k] « 24;
            pixels[k] = pixels[k] » 1;
          } else if (brightness(pixels[k]) > threshold) {
            pixels[k] = pixels[k+pModifier];
          } else {
            //
          }
        }
      updatePixels();
    }

    class PointPosition {
      PVector pos = new PVector();
      PVector tpos = new PVector();
      void update(){  
        pos.lerp(tpos,0.01);
      }
      void render(){
        point(pos.x,pos.y);
        line(pos.x,pos.y,tpos.x,tpos.y);
      }
    }

    int setThreshold(int threshold, int minThreshold, int maxThreshold) {
      if (threshold <= maxThreshold && threshold >= minThreshold && alternate) {
        threshold++;
      } else if (threshold <= maxThreshold && threshold >= minThreshold) {
        threshold—;
      } else if (alternate) {
        threshold = maxThreshold;
        alternate = !alternate;
      } else {
        threshold = minThreshold;
        alternate = !alternate;
      }
      return threshold;
    }

    void startScatter(){
      for (int i=0; i<width; i++) {
        PointPosition p = new PointPosition();
          p.pos.x = 0;
          p.pos.y = 0;
          p.tpos.x = cos(i);
          p.tpos.y = sin(i);
        pointPosition.add(p);
      }
    }

    float randomNormal() {
      float x = 1.0, y = 1.0, s = 2.0;
      while (s >= 1.0) {
        x = random(-1.0f, 1.0f);
        y = random(-1.0f, 1.0f);
        s = x*x + y*y;
      }
      return x * sqrt(-2.0f * log(s)/s);
    }

    int selectRandom(int[] cases){
      int selected = int(random(cases.length));
      int output = cases[selected];
      return output;
    }

     
  3. //folding_140815a

     
  4.  
  5. //straws_140813a

    //p5.js

    var initPointArray = function(numPoints){
        var pointArray = [];
        for (var i=0; i<numPoints; i++) {
            pointArray.push(
                {
                    posX : width/2,
                    posY : height/2,
                    tposX : width/2 + Math.cos(i),
                    tposY : height/2 + Math.sin(i)
                }
                );
        }
        return pointArray;
    };

    var randomNormal = function(){
        var x = random(-1,1),
            y = random(-1,1),
            s = x*x+y*y;
        if (_.isEqual(s,0)||s>0.99) {
            s = 0.99;
        }
        return x*Math.sqrt(-2*Math.log(s)/s);
    };

    var width = 500,
        height = 500;
    var pColor = [255,255,255,2];
    var pointArray = initPointArray(width);
    var lastStory = {
        x: width/2+Math.cos(Math.random(width))*width/3,
        y: height/2+Math.cos(Math.random(height))*height/3
    };

    function setup() {
        createCanvas(500,500);
        background(153);
        frameRate(24);
    };

    function draw() {
        if (_.isEqual(frameCount%24,0)) {
            pColor = [
                        map(randomNormal(),0,1,153,255),
                        map(randomNormal(),0,1,153,255),
                        map(randomNormal(),0,1,200,255),
                        2
                        ];
        }
        fill(pColor[0],pColor[1],pColor[2],pColor[3]);
        stroke(pColor[0],pColor[1],pColor[2],pColor[3]);
        rect(-2,-2,width+2,height+2);
        _.forEach(pointArray,function(p,i){
            p.posX = lerp(p.posX,p.tposX,map(Math.abs(mouseX-width/2),0,width/2,-0.1,0.1));
            p.posY = lerp(p.posY,p.tposY,map(Math.abs(mouseY-height/2),0,height/2,-0.1,0.1));
            p.tposX = p.posX + ((Math.cos(millis()/3) * width / (i+1)) * 12);
            p.tposY = p.posY + ((Math.sin(millis()) * height / (i+1)) * 12);
            if (p.tposX > width || p.tposX < 0 || p.tposY > height || p.tposY < 0) {
                p.posX = width/2,
                p.posY = height/2,
                p.tposX = p.posX + ((Math.cos(millis()/3) * width / (i+1)) * 12);
                p.tposY = p.posY + ((Math.sin(millis()) * height / (i+1)) * 12);
            }
            stroke(
                map(Math.abs(mouseX-width/2),0,width/2,0,255),
                map(Math.abs(mouseY-height/2),0,height/2,0,20)
                );
            point(p.tposX,p.tposY);
            stroke(255,5);
            line(lastStory.x,lastStory.y,p.tposX,p.tposY);
            lastStory = {
                x: p.tposX,
                y: p.tposY
            };
        });
    };

     
  6.  
  7.  
  8. jamesproctor:

    Really proud my print got a prime spot over the record player at the Stetz house

    Quite happy with how this piece turned out!

     
  9. Details from //cell_140804b frame 100

     
  10. Stills from //wavy_1400807a