One of the handy methods we can call on a Leap::Hand
is sphereRadius()
, which returns the size of an imaginary ball filling up a hand. The more outstretched your fingers are the larger the radius, and a more clenched fist will produce smaller values.
What does our ball gesture recognizer class look like? Feast your eyes on this:
typedef std::shared_ptr<BallGesture> BallGesturePtr; void BallGesture::recognizedControls(const Leap::Controller &controller, std::vector<ControlPtr> &controls) { Leap::Frame frame = controller.frame(); if (frame.hands().empty()) return;
If no hands are found in the current frame, there's not much else for us to do here. However, if the user is waving some appendages around, we can do our thing.
for (int i = 0; i < frame.hands().count(); i++) { if (i > 1) break;
If one or two hands are detected in the frame, we might be able to do something useful. We can get extra fancy if we return...