Skip to content Skip to sidebar Skip to footer

Detecting Swipe Gesture Direction With Leap Motion

I'm trying to simply get the direction of a swipe gesture with the Leap Motion using the javascript API. My code is: $(document).ready(function() { controller = new Leap.Contr

Solution 1:

If you care about right, left, up, or down, you can compare the absolute value of the horizontal and vertical coordinates of the Swipe direction vector to see if the Swipe is more vertical or more horizontal (and then compare the relevant coordinate to zero to see if the swipe is going right or left, or up or down):

// Setup Leap loop with frame callback functionvar controllerOptions = {enableGestures: true};

Leap.loop(controllerOptions, function(frame) {

  if (frame.gestures.length > 0) {
    for (var i = 0; i < frame.gestures.length; i++) {
      var gesture = frame.gestures[i];

      if (gesture.type == "swipe") {
          //Classify swipe as either horizontal or verticalvar isHorizontal = Math.abs(gesture.direction[0]) > Math.abs(gesture.direction[1]);
          //Classify as right-left or up-downif(isHorizontal){
              if(gesture.direction[0] > 0){
                  swipeDirection = "right";
              } else {
                  swipeDirection = "left";
              }
          } else { //verticalif(gesture.direction[1] > 0){
                  swipeDirection = "up";
              } else {
                  swipeDirection = "down";
              }                  
          }
       }
     }
  }

})

With a slightly more complex comparison, you could classify swipes as forward or backward, too.

Solution 2:

with enableGestures: true and var gesture = frame.gestures[i];

// detect swipe   if (gesture.direction[0] > gesture.direction[2]) {
         console.log('swipe left')
        }

this is how I did it myself,tbh I can't rem if it's left or right but it's not a long process of elmination

Solution 3:

After a quick analysis I found the information you are looking for:

var gestureType = frame.gestures[0].type;

if (gestureType === "swipe")
{
    if (frame.gestures[0].direction[0] > 0)
        console.log(">>> swipe >>>");
    elseconsole.log("<<< swipe <<<");
}

Solution 4:

The frame object has a gesture only when there is one. A frame can contains 0 hand, 0 finger or 0 gesture. You have to check if a gesture is present, then retrieve needed information.

var frame = controller.frame();
if (frame.gestures.length > 0)
{
  for (var i = 0; i < frame.gestures.length; i++)
  {
   var gesture = frame.gestures[i];
   vartype = gesture.type;
   var direction = gesture.direction;
  }
}

Solution 5:

here is a code sample that works perfectly for me:

var controller = newLeap.Controller({enableGestures: true});

controller.on('gesture', function (gesture){
    console.log(gesture);
    if(gesture.type === 'swipe'){
        handleSwipe(gesture);
    }
});

functionhandleSwipe (swipe){
    var startFrameID;
    if(swipe.state === 'stop'){
        if (swipe.direction[0] > 0){
            //this means that the swipe is to the right directionmoveRight();
        }else{
            //this means that the swipe is to the left directionmoveLeft();
        }
    }
}

controller.connect();

Post a Comment for "Detecting Swipe Gesture Direction With Leap Motion"