Event2015

by sikuda

JavaScript

var width = 1584;
var height = 396;
var offset = 30;
var paper = Raphael(0,0, width, height);
var rect = paper.rect(0,0,1584,396).attr('fill', Raphael.rgb(60, 130, 199));
var img = paper.image('http://sikuda.ru/wp-content/uploads/2015/08/golos_banner.png', 0, 0, width, height);
//var rtext = paper.text(120, 10, "Visible FPS: - Max FPS: -");
var timeFrame = 10;
var dt = 0.1;

var Balls = [ new ball, new ball, new ball(), new ball(), new ball(), new ball, new ball,new ball,new ball, new ball, new ball, new ball(), new ball(), new ball(), new ball, new ball,new ball,new ball,new ball ];
var Lines = [];
for (var i = 0; i < Balls.length; i++){
   for (var k = i+1; k < Balls.length; k++) {
      Lines.push(new spring(Balls[i], Balls[k]));  	 
   }
} 
var LinesMouse = [];
for (var i = 0; i < Balls.length; i++){
  LinesMouse.push(new springMouse(Balls[i]));  	 
}
var point = {x: -1, y: -1}
 

function run() {
    var beginTime = new Date();

    step(Balls);
    draw();

    var endTime = new Date();
    endTime = endTime.getTime() - beginTime.getTime();
    if (endTime !== 0) endTime = 1000 / endTime;
    else endTime = "Max1000";
    //rtext.attr('text',"Visible FPS:" + (1000 / timeFrame) + " Max FPS: " + endTime);
    
    setTimeout(function () {
        run();
    }, timeFrame);
}

function ball() {
    this.r = 1 + 7*Math.random();
    this.x = offset + (width-2*offset) * Math.random();
    this.y = offset + (height-2*offset) * Math.random();
    this.vx = 3*Math.random();
    this.vy = 3*Math.random();
    
    this.rball = paper.circle(0, 0, this.r).attr('fill', 'white').attr('stroke', 'white');
    this.draw = function () {
        var x = this.x;
        var y = this.y;
        this.rball.transform("t"+(x)+","+(y));
    };
    return this;
}

function spring(one, two) {
    this.one = one;
    this.two = two;
    this.rline = paper.path("M"+(one.x)+","+(one.y)+"L"+(two.x)+","+(two.y)+"Z").attr('stroke', 'white');;
    this.draw = function () {
        dx =...