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);
}
}
}