docs: function (gestureState, touchHistory) {
      gestureState.numberActiveTouches = touchHistory.numberActiveTouches;
      gestureState.moveX = currentCentroidXOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo);
      gestureState.moveY = currentCentroidYOfTouchesChangedAfter(touchHistory, gestureState._accountsForMovesUpTo);
      const movedAfter = gestureState._accountsForMovesUpTo;
      const prevX = previousCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);
      const x = currentCentroidXOfTouchesChangedAfter(touchHistory, movedAfter);
      const prevY = previousCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);
      const y = currentCentroidYOfTouchesChangedAfter(touchHistory, movedAfter);
      const nextDX = gestureState.dx + (x - prevX);
      const nextDY = gestureState.dy + (y - prevY);
  
      // TODO: This must be filtered intelligently.
      const dt = touchHistory.mostRecentTimeStamp - gestureState._accountsForMovesUpTo;
      gestureState.vx = (nextDX - gestureState.dx) / dt;
      gestureState.vy = (nextDY - gestureState.dy) / dt;
  
      gestureState.dx = nextDX;
      gestureState.dy = nextDY;
      gestureState._accountsForMovesUpTo = touchHistory.mostRecentTimeStamp;
    }