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