Alexander Deplov

Spirograph star

Spirograph star

Code

var bg = new Path.Rectangle({
    size: view.bounds,
    fillColor: 'black',
    position: view.center
})
var clones = 8
var angle = 360 / clones
var group = new Group()
var borderCircle = new Path.Circle(view.center, 115)
borderCircle.strokeColor = 'darkblue'
borderCircle.strokeWidth = 0.2
borderCircle.opacity = 0
for (var i = 0; i < clones; i++) {
    var path = new Path.Rectangle({
        size: 5,
        radius: 5,
        strokeWidth: 0.2,
        strokeColor: 'blue',
        position: view.center + [0, 120],
        opacity: 0
    })
    path.rotate(angle * i, view.center)
    group.addChild(path)
}
var obj1;
var objectsGroup = new Group()

function onFrame(event) {
    group.rotate(1)
    objectsGroup.rotate(-0.03)
    group.position.x = view.center.x + Math.cos(event.count * 0.04) * 50
    group.position.y = view.center.y + Math.sin(event.count * 0.04) * 50
    var centerOfstar = new paper.Point(100, 50);
    var myStar = new paper.Path.Star(centerOfstar, 5, 55, 20)
    myStar.strokeColor = 'blue'
    myStar.fillColor = 'black'
    myStar.visible = false
    obj1 = myStar.clone()
    obj1.visible = true
    objectsGroup.addChild(obj1)
    if (obj1.strokeColor === null) {
        obj1.strokeColor = 'red'
        obj1.scaling += 2 + 1.5 * Math.sin(event.count * 0.2)
    }
    for (var i = 0; i < group.children.length; i++) {
        var object = group.children[i]
        obj1.position = object.position
        obj1.strokeColor.hue += event.count * 0.25
    }
    if (event.count > 512) {
        objectsGroup.children[0].remove()
    }
    for (var i = 0; i < objectsGroup.children.length; i++) {
        objectsGroup.children[i].strokeColor.hue += 0.3
        objectsGroup.children[i].rotation = 0.5
    }
}