Code
var bg = new Path.Rectangle({
size: view.bounds,
fillColor: 'black',
position: view.center
})
var radius = 20
var amount = 512
var spacing = 50
var scale = 0.2
var group = createPhyllotaxis(amount)
createPhyllotaxis(amount)
function createPhyllotaxis(amount) {
var group = new Group();
var rotation = 137.5077640500;
for (var i = 1; i <= amount; i++) {
var element = new Path.Rectangle({
point: {
length: spacing * radius * Math.sqrt(i),
angle: i * rotation
},
size: new Size(radius, radius),
parent: group,
fillColor: 'blue',
opacity: 1,
radius: radius
});
element.fillColor.hue = (amount * i / Math.PI / 2) - i
element.applyMatrix = false
element.scaling = scale + Math.sin(i / amount + Math.PI / 2 * i / amount) - scale
}
return group;
}
function onFrame(event) {
for (var i = 0; i < group.children.length; i++) {
var element = group.children[i]
var scaleRotationSpeed = 0.05
var scaleAnimation = (Math.sin(i / amount + Math.PI / 2 * i / amount) - scale + Math.sin(i + event.count * scaleRotationSpeed)) / 1.5
element.scaling = scaleAnimation
element.opacity = scaleAnimation
}
}
group.position = view.center
group.fitBounds(view.bounds.scale(0.7))