Pixelbits

Hi, I'm @jasonlong. I'm trying to make a small creative coding sketch every day(ish) to learn new things. All code is available in the GitHub repo.

Animated circles shifting hues and cycling between color blending modes.

<script type="text/paperscript" canvas="canvas-0009">
  var radius = view.size.width / 4;
  var start1 = new Point(radius, view.size.height / 2);
  var start2 = new Point(view.size.width - radius, view.size.height / 2);

  var modes = ['multiply', 'screen', 'overlay', 'soft-light', 'hard-light', 'color-dodge'];

  var modeIndex = 0;

  var circle1 = new Path.Circle({
    center: start1,
    radius: radius,
    fillColor: '#0074d9',
    blendMode: modes[modeIndex]
  });
  var circle2 = new Path.Circle({
    center: start2,
    radius: radius,
    fillColor: '#ff4136',
    blendMode: modes[modeIndex]
  });

  function onFrame(event) {
    var vector1 = start2 - circle1.position;
    var vector2 = start1 - circle2.position;

    if (vector1.length == 0) {
      // swap directions
      var tmpStart = start1;
      start1 = start2;
      start2 = tmpStart;

      if (modes.length - 1 == modeIndex) {
        modeIndex = 0;
      }
      else {
        modeIndex++;
      }

      circle1.blendMode = modes[modeIndex];
      circle2.blendMode = modes[modeIndex];
    }

    circle1.position.x += (vector1.x < 0) ? -2 : 2;
    circle2.position.x += (vector2.x < 0) ? -2 : 2;

    circle1.fillColor.hue += 1;
    circle2.fillColor.hue += 1;
  }
</script>

<canvas id="canvas-0009" height="250"></canvas>