var path = new Path({ fillColor: 'black' }); var amount = 3 for (var i = 0; i < amount; i++) { var point = new Point(600, 650) * Point.random(view.size); path.add(point); console.log(point); var segment = path.segments[i]; } function onFrame(event) { // Loop through the segments of the path: // A cylic value between -1 and 1 var sinus = Math.sin(event.time * 3 + i); // Change the y position of the segment point: segment.point.y = sinus * 60 + 100; } path.closed = true; path.fullySelected = true; path.position.x += 1000; path.smooth(); // function Ball(r, p, v) { // // this.radius = r; // this.point = p; // this.vector = v; // this.maxVec = 0.1; // this.numSegment = Math.floor(r / 1 + 1); // this.boundOffset = []; // this.boundOffsetBuff = []; // this.sidePoints = []; // this.path = new Path({ // fillColor: { // hue: Math.random() * 360, // saturation: 1, // brightness: 1 // }, // blendMode: 'lighter' // }); // // for (var i = 0; i < this.numSegment; i ++) { // this.boundOffset.push(this.radius); // this.boundOffsetBuff.push(this.radius); // this.path.add(new Point()); // this.sidePoints.push(new Point({ // angle: 360 / this.numSegment * i, // length: 1 // })); // } // } // // Ball.prototype = { // iterate: function() { // this.checkBorders(); // if (this.vector.length > this.maxVec) // this.vector.length = this.maxVec; // this.point += this.vector; // this.updateShape(); // }, // // checkBorders: function() { // var size = view.size; // if (this.point.x < -this.radius) // this.point.x = size.width + this.radius; // if (this.point.x > size.width + this.radius) // this.point.x = -this.radius; // if (this.point.y < -this.radius) // this.point.y = size.height + this.radius; // if (this.point.y > size.height + this.radius) // this.point.y = -this.radius; // }, // // updateShape: function() { // var segments = this.path.segments; // for (var i = 0; i < this.numSegment; i ++) // segments[i].point = this.getSidePoint(i); // // this.path.smooth(); // for (var i = 0; i < this.numSegment; i ++) { // if (this.boundOffset[i] < this.radius / 4) // this.boundOffset[i] = this.radius / 4; // var next = (i + 1) % this.numSegment; // var prev = (i > 0) ? i - 1 : this.numSegment - 1; // var offset = this.boundOffset[i]; // offset += (this.radius - offset) / 15; // offset += ((this.boundOffset[next] + this.boundOffset[prev]) / 2 - offset) / 3; // this.boundOffsetBuff[i] = this.boundOffset[i] = offset; // } // }, // // react: function(b) { // var dist = this.point.getDistance(b.point); // if (dist < this.radius + b.radius && dist != 0) { // var overlap = this.radius + b.radius - dist; // var direc = (this.point - b.point).normalize(overlap * 0.015); // this.vector += direc; // b.vector -= direc; // // this.calcBounds(b); // b.calcBounds(this); // this.updateBounds(); // b.updateBounds(); // } // }, // // getBoundOffset: function(b) { // var diff = this.point - b; // var angle = (diff.angle + 180) % 360; // return this.boundOffset[Math.floor(angle / 360 * this.boundOffset.length)]; // }, // // calcBounds: function(b) { // for (var i = 0; i < this.numSegment; i ++) { // var tp = this.getSidePoint(i); // var bLen = b.getBoundOffset(tp); // var td = tp.getDistance(b.point); // if (td < bLen) { // this.boundOffsetBuff[i] -= (bLen - td) / 2; // } // } // }, // // getSidePoint: function(index) { // return this.point + this.sidePoints[index] * this.boundOffset[index]; // }, // // updateBounds: function() { // for (var i = 0; i < this.numSegment; i ++) // this.boundOffset[i] = this.boundOffsetBuff[i]; // } // }; // // //--------------------- main --------------------- // // var balls = []; // var numBalls = 7; // for (var i = 0; i < numBalls; i++) { // var position = Point.random() * view.size; // var vector = new Point({ // angle: 360 * Math.random(), // length: Math.random() * 10 // }); // var radius = Math.random() * 100 + 100; // balls.push(new Ball(radius, position, vector)); // // } // function onFrame() { // for (var i = 0; i < balls.length - 1; i++) { // for (var j = i + 1; j < balls.length; j++) { // balls[i].react(balls[j]); // } // } // for (var i = 0, l = balls.length; i < l; i++) { // balls[i].iterate(); // } // }