Alexander Deplov

Sunflower animation

Sunflower animation

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))