1. //starField_140804a
    ArrayList<PointPosition> pointPosition = new ArrayList();
    int redC, greenC, blueC, alphaC;

    void setup(){
      size(500,750);
      colorMode(HSB);
      startScatter();
    }

    void draw(){
      background(0);
      for(PointPosition p:pointPosition){
        p.tpos.x = roundUp(int(p.tpos.x+cos(p.index)*width/p.index),2);
        p.tpos.y = roundUp(int(p.tpos.y+sin(p.index)*height/p.index),2);
        p.update();
        p.render();
      }
    }

    void startScatter(){
      for (int i = 0; i<width*100; i++){
        PointPosition p = new PointPosition();
          p.index = i;
          p.pos.x = width/2;
          p.pos.y = height/2;
          p.tpos.x = width/2 + cos(i)*width/i;
          p.tpos.y = height/2 + sin(i)*height/i;
          redC = int(map(sin(p.tpos.x),0,1,153,255));
          greenC = int(map(cos(p.tpos.x),0,1,135,255));
          blueC = int(map(sin(p.tpos.y),0,1,200,255));
          p.pointColor = color(redC,greenC,blueC);
        pointPosition.add(p);
      }
    }

    class PointPosition{
      float rWidth, rHeight;
      PVector pos = new PVector();
      PVector tpos = new PVector();
      color pointColor;
      int index;
      void update(){
        pos.lerp(tpos,0.1);
      }
      void render(){
        stroke(pointColor);
        point(pos.x,pos.y);
        stroke(pointColor,50);
        line(pos.x,pos.y,tpos.x,tpos.y);
      }
    }

    int roundUp(int toRound, int roundInterval) {
      return (roundInterval - toRound % roundInterval) + toRound;
    }

     

  2. unadjustd said: hey whats you giphy blog again? i forgot

    jamesproctor:

    All my processing work, a lot of which are gifs are on my research blog here: http://blog.jamesmakes.com, I also post photo gifs on this blog sometimes: http://jamesproctor.tumblr.com/tagged/gif

    Friendly reminder; I almost always use the #gif tag when appropriate

     
  3. Stills from //iris_140719

     
  4. //vapor_140723a

    Detail views and stills so you can see the color without it being ruined by dithering.

     
  5. //unwinding_140730c

     
  6. //unwinding_140730b

     
  7. //unwinding_140730a

     
  8. //unwinding_140427c

     
  9. //unwinding_140427b
    ArrayList<PointPosition> pointPosition = new ArrayList();
    float lposX, lposY;
    boolean alternate = true;
    int threshold = 135;
    int width = 1000/2;
    int[] directions = {
      (width*-1)-1,
      (width*-1)+1,
      width+1,
      width-1
    };

    void setup(){
      background(255);
      size(width,1500/2);
      startScatter();
    }

    void draw(){
      fill(255,200);
      stroke(255,200);
      rect(0,0,width,height);
      int i = 0;
      for(PointPosition p:pointPosition){
        i++;
        p.tpos.x = p.tpos.x+cos(millis()/3)*width/i*12;
        p.tpos.y = p.tpos.y+sin(millis())*width/i*12;
        p.update();
        stroke(0,100);
        p.render();
        float pDist = dist(lposX,lposY,p.pos.x,p.pos.y);
        if (pDist < width/2) {
          stroke(0,20);
          line(lposX,lposY,p.pos.x,p.pos.y);
        }
        lposX = p.pos.x;
        lposY = p.pos.y;
      }
      loadPixels();
        for (int k=0; k<pixels.length; k++) {
          int pModifier = selectRandom(directions);
          if (k > width+1 && k < pixels.length-width-1) {
            if (brightness(pixels[k]) == threshold) {
              pixels[k] = pixels[k] » 56;
            } else if (brightness(pixels[k]) > threshold) {
    //
            } else {
              pixels[k+pModifier] = pixels[k];
            }
          }
        }
      updatePixels();
      int minThreshold = 1;
      int maxThreshold = 153;
      threshold = setThreshold(threshold,minThreshold,maxThreshold);
      filter(BLUR,0.58);
    }

    class PointPosition {
      PVector pos = new PVector();
      PVector tpos = new PVector();
      void update(){
        pos.lerp(tpos,0.01);
      }
      void render(){
        point(pos.x,pos.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;
    }

    int selectRandom(int[] cases){
      int selected = int(random(cases.length));
      int output = cases[selected];
      return output;
    }
     
    void startScatter(){
      for (int i=0; i<width; i++) {
        PointPosition p = new PointPosition();
          lposX = width/2+cos(i)*width/3;
          lposY = height/2+sin(i)*width/3;
          p.pos.x = width/2;
          p.pos.y = height/2;
          p.tpos.x = width/2+cos(i)*width/3;
          p.tpos.y = height/2+sin(i)*width/3;
        pointPosition.add(p);
      }
    }

     
  10. //shell_140727c