Alexander Deplov

Sold objects with colored background

Sold objects with colored background

Files

Code

var bg = new Path.Rectangle({
    size: view.bounds,
    fillColor: 'black',
    position: view.center
})

var maxX = 4
var maxY = 7
var padding = 80
var radius1 = 15
var radius2 = 40
var group = new Group()

for (x = 0; x < maxX; x++){
  for (y = 0; y < maxY; y++){


    var hexagon = new Path.Star({
      center: [padding * x, padding * y],
      points: 6,
      radius1: radius1,
      radius2: radius2,
      fillColor: new Color.random(),
      applyMatrix: false,
      parent: group
    })
    hexagon.scale(1.2)

    roundCorners(hexagon, 6)

    hexagon.onFrame = function(event){
      this.fillColor.hue += 5
      this.rotation -= 0.25
      // this.fillColor.hue += Math.random() * 0.5 + Math.random() * 3
    }

    if (x % 2 == 0){
      hexagon.position.y += radius2/1
    }

    var clone = hexagon.clone()
    clone.fillColor = 'black'
    // clone.scale(0.9)
    clone.onFrame = function(event){
      this.rotate(Math.random() * 0.1 + Math.random() * 1)      
      // this.scale(Math.sin(event.count * 1.2), this.position)
    }
  }
}

 function roundCorners(path,radius) {

        var segments = path.segments.slice(0);
        path.removeSegments();

    for(var i = 0, l = segments.length; i < l; i++) {
      var curPoint = segments[i].point;
      var nextPoint = segments[i + 1 == l ? 0 : i + 1].point;
      var prevPoint = segments[i - 1 < 0 ? segments.length - 1 : i - 1].point;
      var nextDelta = curPoint.subtract(nextPoint);
      var prevDelta = curPoint.subtract(prevPoint);

      nextDelta.length = radius;
      prevDelta.length = radius;

      path.add(
        new paper.Segment(
          curPoint.subtract(prevDelta),
          null,
          prevDelta.divide(1.5)
        )
      );

      path.add(
        new paper.Segment(
          curPoint.subtract(nextDelta),
          nextDelta.divide(1.5),
          null
        )
      );
    }
    path.closed = true;
    return path;
  }
  
  group.position = view.center