integ/js/vs/_vs.chart.circlelayout.js
author veltr
Mon, 29 Apr 2013 15:02:35 +0200
changeset 53 88666afffe6b
parent 28 84719280c84d
permissions -rwxr-xr-x
Cinebuzz with strata
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
     1
(function ($) {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
     2
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
     3
$.fn._vs.chart.CircleLayout = function(_this,fn,options) {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
     4
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
     5
  var mouseJointTest;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
     6
  var csX;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
     7
  var csY;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
     8
  var treeLayout;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
     9
  var initValue  = []; // Initiation des valeurs
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    10
  var tdv        = 0;  // Incoming point
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    11
  var _this;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    12
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    13
  this.init = function (_this,options){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    14
    console.log('Circle Layout Init')
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    15
    this._this              = _this
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    16
    gravity                 = new _this.phy.b2Vec2(0, 0);    // Zero gravity
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    17
    _this.world.m_gravity   = gravity;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    18
    _this.chartPhySetup     = {grounds:[],wall:[]}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    19
    this.treeLayout         = _this.settings.chart.treeLayout;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    20
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    21
            for (var i=0; i<_this.settings.data.model.length; i++) {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    22
            _this.settings.data.strata[i][0].value = _this.settings.data.strata[i][0].initValue;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    23
            }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    24
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    25
    // process data distribution to form layout
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    26
    for (var i = 0; i <_this.settings.data.model.length; i++) { 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    27
      //console.log("-->",_this.settings.data.model[i])
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    28
      _this.settings.data.model[i].value=0
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    29
      for (var j = 0; j <_this.settings.data.strata[i].length; j++) { 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    30
         //console.log("-->",_this.settings.data.strata[i][j].value)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    31
        _this.settings.data.model[i].value += _this.settings.data.strata[i][j].value
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    32
      }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    33
      //console.log("-->",_this.settings.data.model[i].value)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    34
      initValue.push(_this.settings.data.model[i].value)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    35
      tdv += _this.settings.data.model[i].value
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    36
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    37
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    38
    if(this.treeLayout){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    39
      console.log("ici")
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    40
     this.setupBubbleChartPhysics(_this);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    41
    }else{
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    42
     this.setupPieChartPhysics(_this);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    43
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    44
   
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    45
  };
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    46
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    47
  this.setupPieChartPhysics = function(_this){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    48
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    49
    console.log("w",_this.settings.width)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    50
    // Pivot drawing
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    51
    var radius = _this.settings.chart.radius
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    52
        csX    = _this.settings.chart.width/2+_this.settings.chart.x
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    53
        csY    = _this.settings.chart.height/2+_this.settings.chart.y
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    54
    var axis   = pivot(csX,csY,radius, _this.settings.chart.wallColor);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    55
  
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    56
    //targets
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    57
    for (var i = 0;  i< _this.settings.data.model.length; i++) {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    58
      _this.settings.sedimentation.incoming.target[i] = {x:csX,y:csY};
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    59
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    60
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    61
    // Separation 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    62
    var wall   = []
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    63
    var spacer = _this.settings.chart.spacer;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    64
  
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    65
    // Incoming point
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    66
    var p      = 0;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    67
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    68
    console.log("tdv",tdv)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    69
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    70
    if (tdv==0){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    71
      for (var i = 0; i <_this.settings.data.length; i++) { 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    72
        initValue[i] = 1;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    73
      }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    74
      tdv = initValue.length
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    75
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    76
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    77
    for (var i = 0; i <initValue.length; i++) { 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    78
       v = initValue[i]
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    79
       a2 = ((v/2+p)/tdv)*360-90
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    80
       p += v
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    81
       a = (p/tdv)*360-90
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    82
       c = circularCoordinate(a2,radius*5,csX,csY)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    83
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    84
    // incomming point setup 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    85
       console.log(c)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    86
      _this.settings.sedimentation.incoming.point[i] = c 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    87
    
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    88
    // Bounds Wall drawing
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    89
    _this.chartPhySetup.grounds[i]= this.createBox(
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    90
                  _this,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    91
                  csX,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    92
                  csY,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    93
                  spacer,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    94
                  radius,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    95
                  a,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    96
                  radius,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    97
                  'wall',
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    98
                  _this.settings.chart.wallColor);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
    99
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   100
    console.log("w",_this.settings.chart.width)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   101
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   102
  };
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   103
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   104
  this.update = function(_this,options){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   105
    console.log("update")
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   106
    var defaultOptions = {cat:0,r:0}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   107
    options.r-=90
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   108
    var angle          = (options.r+90)*(Math.PI/180)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   109
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   110
    var c              = circularCoordinate(options.r,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   111
                                    _this.settings.chart.radius,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   112
                                    _this.settings.chart.width/2+_this.settings.chart.x,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   113
                                    _this.settings.chart.height/2+_this.settings.chart.y)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   114
   
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   115
    if(_this.chartPhySetup.grounds[options.cat]!=null) {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   116
      var myBody = _this.chartPhySetup.grounds[options.cat].GetBody();
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   117
      var myPos  = myBody.GetWorldCenter();
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   118
      var myAngle= myBody.GetAngle()
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   119
      //console.log(myAngle)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   120
      myPos.y    = c.y/ _this.settings.options.scale
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   121
      myPos.x    = c.x/ _this.settings.options.scale
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   122
      myAngle    = angle
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   123
      myBody.SetPosition(myPos);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   124
      myBody.SetAngle(myAngle);      
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   125
      //console.log(myBody)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   126
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   127
  }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   128
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   129
  // default token for stream 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   130
  this.token = function (_this,options){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   131
    var i = options;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   132
    //console.log(options)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   133
    var token = {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   134
              x:(_this.settings.sedimentation.incoming.point[i].x+(Math.random()*2)),
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   135
              y:(_this.settings.sedimentation.incoming.point[i].y+(Math.random()*1)),
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   136
              t:_this.now(),
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   137
              size:_this.settings.sedimentation.token.size.original,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   138
              category:i,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   139
              phy:{
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   140
                  density:10,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   141
                  friction:0,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   142
                  restitution:0
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   143
              },
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   144
              targets:[{
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   145
                  //  bizare x/2 or x ...
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   146
                  x: _this.settings.sedimentation.incoming.target[i].x,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   147
                  y: _this.settings.sedimentation.incoming.target[i].y
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   148
              }]
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   149
            }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   150
    return token; 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   151
  }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   152
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   153
  function circularCoordinate(degree,radius,posX,posY){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   154
      j = degree*Math.PI/180
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   155
      var x = (Math.cos(j) * radius)+posX;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   156
      var y = (Math.sin(j) * radius)+posY;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   157
      var c = {x:x,y:y}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   158
      return c
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   159
  }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   160
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   161
  function pivot (centerSceneX,centerSceneY,radius,color){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   162
    var scale           = _this.settings.options.scale
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   163
    var fixDef          = new _this.phy.b2FixtureDef;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   164
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   165
    fixDef.density      = 1.0;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   166
    fixDef.friction     = 0.5;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   167
    fixDef.restitution  = 0.2;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   168
    var bodyDef         = new _this.phy.b2BodyDef;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   169
    fixDef.shape        = new _this.phy.b2CircleShape(radius/scale);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   170
    bodyDef.position.Set(centerSceneX/scale, centerSceneY/scale);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   171
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   172
    var axis            = _this.world.CreateBody(bodyDef).CreateFixture(fixDef);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   173
    axis.m_userData     = {type:"wall",familyID:null,fillStyle:color,strokeStyle:color,r:radius}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   174
    return  axis;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   175
  }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   176
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   177
  this.createBox = function (_this,x,y,w,h,a,r,type,color){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   178
     var scale          = _this.settings.options.scale
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   179
     var fixDef         = new _this.phy.b2FixtureDef;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   180
     var c              = circularCoordinate(a,r,x,y)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   181
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   182
     fixDef.density     = 1.0;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   183
     fixDef.friction    = 0.5;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   184
     fixDef.restitution = 0.2;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   185
     
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   186
     var bodyDef        = new _this.phy.b2BodyDef;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   187
     var angle          = (a+90)*(Math.PI/180)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   188
     bodyDef.angle      = angle;//a+80 ;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   189
     //create ground
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   190
     bodyDef.type       = _this.phy.b2Body.b2_staticBody;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   191
     fixDef.shape       = new _this.phy.b2PolygonShape;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   192
     fixDef.shape.SetAsBox(w/scale, h/scale);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   193
     bodyDef.position.Set(c.x/scale,c.y/scale );
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   194
     var box = _this.world.CreateBody(bodyDef).CreateFixture(fixDef);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   195
     box.m_userData = {type:type,fillStyle:color,w:w,h:h,r:r}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   196
     //console.log(box)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   197
     return box
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   198
  }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   199
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   200
  this.getPosition = function(_this){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   201
    var result =[]
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   202
    for (var i = 0; i < _this.chartPhySetup.grounds.length; i++) {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   203
      myElement = _this.chartPhySetup.grounds[i]
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   204
      myBody    = myElement.GetBody();
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   205
      //console.log(myBody.GetAngle())
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   206
      result.push({
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   207
        x:(myBody.GetWorldCenter().x* _this.settings.options.scale),
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   208
        y:(myBody.GetWorldCenter().y* _this.settings.options.scale),
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   209
        a:myBody.GetAngle(),
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   210
        w:myElement.m_userData.w,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   211
        h:myElement.m_userData.h,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   212
        r:myElement.m_userData.r,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   213
      })
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   214
    };  
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   215
   return result 
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   216
  }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   217
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   218
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   219
//  --------- --------- --------- --------- --------- --------- ---------
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   220
// Bubble ---------
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   221
  this.setupBubbleChartPhysics= function(_this){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   222
    console.log("setupBubbleChartPhysics")
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   223
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   224
    var colSize = ( _this.settings.chart.width/ _this.settings.data.model.length)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   225
    var colBwid = _this.settings.chart.spacer
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   226
    var colYpos = _this.settings.chart.height/2+_this.settings.y+colBwid
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   227
    var Ypos    = 0;//chart.position.y;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   228
    var Xpos    = 0;//chart.position.x;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   229
    var NumCol  = _this.settings.chart.column;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   230
   // console.log(Xpos)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   231
   // console.log( _this.settings.width)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   232
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   233
  // array layout
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   234
  for( var i = 0 ; i<_this.settings.data.model.length; i++) {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   235
      
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   236
      Xpos =  _this.settings.chart.x+(i%NumCol*colBwid)+(colBwid/2)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   237
      Ypos =  _this.settings.chart.y+Math.floor(i/NumCol)*colBwid+(colBwid/2)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   238
      //console.log("- "+i+" x:"+Xpos+" y:"+Ypos);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   239
      _this.settings.sedimentation.incoming.target[i] = {x:Xpos,y:Ypos};
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   240
      
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   241
      pivot[i] = creatMyBubblePivot(Xpos,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   242
                                    Ypos,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   243
                                    _this.settings.chart.spacer,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   244
                                    i);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   245
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   246
      _this.settings.data.model[i].incomingPoint = {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   247
                                     x:Xpos,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   248
                                     y:Ypos
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   249
                                   };
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   250
      
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   251
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   252
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   253
  }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   254
function creatMyBubblePivot(Xpos,Ypos,radius,id){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   255
   console.log("CreatMyBubblePivot",Xpos,Ypos,radius,id)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   256
   
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   257
   var scale          = _this.settings.options.scale
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   258
   var fixDef         = new _this.phy.b2FixtureDef;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   259
   var colorRange     = d3.scale.category10()
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   260
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   261
    fixDef.density    = 10000;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   262
    fixDef.friction   = 0.0;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   263
    fixDef.restitution= 0.0;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   264
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   265
   var bodyDef        = new _this.phy.b2BodyDef;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   266
   fixDef.shape       = new _this.phy.b2CircleShape(radius*scale);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   267
   bodyDef.position.Set(Xpos/scale, Ypos/scale);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   268
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   269
   var axis           = _this.world.CreateBody( bodyDef);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   270
   var axisf          = axis.CreateFixture(fixDef);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   271
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   272
   console.log(id,colorRange(id))
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   273
   axisf.m_userData   = {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   274
                         type:"BubblePivot",
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   275
                         familyID:id,
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   276
                         fillStyle:_this.settings.chart.wallColor
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   277
                        }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   278
   console.log(id,axisf)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   279
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   280
   axisf.m_shape.m_radius = _this.settings.data.model[id].value/scale;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   281
   //console.log(Xpos,Ypos)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   282
   return axisf;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   283
}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   284
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   285
this.getPivotPosition =function (id){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   286
  
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   287
  //console.log(_this.settings.data.model)
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   288
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   289
  if(typeof(id)!="undefined"){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   290
    return this.pivot
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   291
  } else{
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   292
    var result=[];
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   293
      for( var i = 0 ; i<_this.settings.data.model.length; i++) {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   294
        result.push(_this.settings.data.model[i])
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   295
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   296
    return result
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   297
  }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   298
}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   299
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   300
function updatePivotFixPosition(x,y,id){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   301
    var myBody        = pivot[id].GetBody();
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   302
    myBody.SetPosition(new b2Vec2(x/scale, y/scale));
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   303
    _this.settings.data.model[id].incomingPoint.x=x;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   304
    _this.settings.data.model[id].incomingPoint.y=y;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   305
    setFlowSpeed(speedFlow);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   306
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   307
}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   308
function setPivotPosition(x,y,id){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   309
    for( var i = 0 ; i<categorys[id].joins.length; i++) {
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   310
      categorys[id].joins[i].SetTarget(new b2Vec2(x/scale, y/scale));
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   311
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   312
}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   313
function setPivotRadius(r,id){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   314
    //nBodies[b].m_shape.m_radius
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   315
    pivot[id].m_shape.m_radius=r;
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   316
}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   317
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   318
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   319
// Bubble ---------
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   320
//  --------- --------- --------- --------- --------- --------- ---------
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   321
  if (typeof(fn)!=undefined){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   322
    var result = this[fn](_this,options);
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   323
    if (typeof(result)!=undefined){
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   324
      return result
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   325
    }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   326
  }
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   327
  
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   328
}
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   329
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   330
88666afffe6b Cinebuzz with strata
veltr
parents: 28
diff changeset
   331
})(jQuery);