function bubbleset_touchmove()

in src/chart.js [2179:2272]


      function bubbleset_touchmove() {

        
        d3.event.preventDefault();
        d3.event.stopPropagation();
        if (animation == 'on') {
          this_chart.interrupt();
        }
        touching = true;     
        hideCarousel();

        var now = new Date(); 

        if (last_touch != undefined) {
          if (now.getSeconds() != last_touch.getSeconds()) {
            last_touch = now;   
            touch_counter = 0;
          }    
        }
        else {
          last_touch = now; 
        }

        touch_counter++;
        
        circlefit.resetPoints();

        var d = d3.touches(this);
        var x = d[0][0];
        var y = d[0][1];
        var touch_point = {
          'x': x,
          'y': y
        };  

        var result = {
          'success': false 
        };

        // console.log(last_touch.getSeconds() + ":  <" + x + ',' + y + '>');
        touch_points.push(touch_point);
        if (touch_points.length > 30) {
          touch_points.splice(0,1);
          touch_points.forEach(function(point) {
            circlefit.addPoint(point.x, point.y);
          });
        }
        
        if (touch_counter % 3 == 0) {

          if (touch_points.length > 3){
            result = circlefit.compute();       
          }

          if (result.success) {
            var p1 = {
              'x': 0,
              'y': 0
            };          
            var p2 = {
              'x': result.projections[result.projections.length - 2].x - result.center.x,
              'y': result.projections[result.projections.length - 2].y - result.center.y
            };
            var p3 = {
              'x': result.projections[result.projections.length - 1].x - result.center.x,
              'y': result.projections[result.projections.length - 1].y - result.center.y
            };

            var angle = (Math.atan2(p3.y - p1.y, p3.x - p1.x) - Math.atan2(p2.y - p1.y, p2.x - p1.x)) *  180 / Math.PI;
            
            // console.log(result.projections);  
            // console.log({
            //   'p2': '<' + p2.x + ', ' + p2.y + '>',
            //   'p3': '<' + p3.x + ', ' + p3.y + '>',
            //   // 'radius': result.radius,
            //   // 'theta': theta,
            //   'angle': angle,
            //   'scroll': scale_scroll(angle)
            // });
            scroll_year = scroll_year + scale_scroll(angle);
            if (scroll_year < params.yearMin) {
              current_year = params.yearMin;
            }
            else if (scroll_year > params.yearMax) {
              current_year = params.yearMax;
            }
            else {
              current_year = scroll_year;
            }
            chart_g.call(chart_instance);    
          }
        }

      }