code: function triggerGesture(elements, startTouches, options, done) {
          var interval = 10,
              loops = Math.ceil(options.duration / interval),
              loop = 1;
  
          elements = ensureAnArray(elements);
  
          options = merge(options, {
              pos: [10, 10],
              duration: 250,
              touches: 1,
              deltaX: 0,
              deltaY: 0,
              radius: 100,
              scale: 1,
              rotation: 0,
              easing: 'swing'
          });
  
          function gestureLoop() {
              // calculate the radius
              // this is for scaling and multiple touches
              var radius = options.radius;
              if (options.scale !== 1) {
                  radius = options.radius - (options.radius * (1 - options.scale) * (1 / loops * loop));
              }
  
              // calculate new position/rotation
              var easing = Simulator.easings[options.easing](1 / loops * loop),
                  posX = options.pos[0] + (options.deltaX / loops * loop) * easing,
                  posY = options.pos[1] + (options.deltaY / loops * loop) * easing,
                  rotation = options.rotation / loops * loop,
                  touches = getTouches([posX, posY], elements, startTouches.length, radius, rotation),
                  isFirst = (loop == 1),
                  isLast = (loop == loops);
  
              for (var t = touches.length - 1; t >= 0; t--) {
                  if (isFirst) {
                      trigger(touches, touches[t].target, 'start');
                  } else if (isLast) {
                      trigger(touches, touches[t].target, 'end');
  
                      // Remove processed touch
                      touches.pop()
  
                      if (touches.length === 0) {
                          return done();
                      }
                  } else {
                      trigger(touches, touches[t].target, 'move');
                  }
              }
  
              setTimeout(gestureLoop, interval);
              loop++;
          }
          gestureLoop();
      }
docs: trigger a gesture
  @param elements
  @param startTouches
  @param options
  @param done