Jellyfish 2 - more flexible
Open in Paper.js Sketch
Open in Paper.js Sketch
Open in Paper.js Sketch
Open in Paper.js Sketch
Open in Paper.js Sketch
Code
var bg = new Path.Rectangle({
size: view.size,
fillColor: 'black'
})
var amount = 20
var strokeWidth = 20
var waveAmplitude = 20
var waveLength = 0.1
var animationSpeed = 0.05
var padding = 20
var colorWidth = -8
var distanceFromCenter = 50 // 0
var array = []
var rootGroup = new Group()
function createPath(i, amount){
var path = new Path.Line({
from: [0, 0],
to: [0, distanceFromCenter],
strokeColor: 'blue',
strokeWidth: strokeWidth,
strokeCap: 'round',
position: view.center,
applyMatrix: false,
// fullySelected: true
})
var distance = path.getPointAt(path.length/10)
path.insert(1, distance)
path.onFrame = function(event){
this.strokeColor.hue = colorWidth * i + (-event.count * 0.5)
this.segments[this.segments.length-1].point.y = Math.sin(animationSpeed * event.count + i ) * waveAmplitude * 2
this.segments[this.segments.length-1].point.x = view.center.x / 2
this.segments[this.segments.length-2].point.y = Math.sin(animationSpeed * event.count + i ) * waveAmplitude / 5
this.segments[this.segments.length-2].point.x = view.center.x / 2 / 2
path.smooth({ type: 'continuous' })
}
path.rotate(360 / amount * i, view.center)
return path
}
for (var i = 0; i < amount; i++){
var path = createPath(i, amount)
array.push(path)
rootGroup.addChild(path)
}
rootGroup.position = view.center