Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Currently the AirPointr service recognizes the following gestures:## 1. Circle The circle gesture is triggered by a circular hand movement.
Once the hand movement has completed a full circle, the gesture is active and the circle specific output variables become valid. All output variables are based on the center of the initial circle that activated the gesture, so you are free to draw your circles anywhere in the viewfield of the camera. A detailed explanation of the circle variables can be found [here](https://github.com/airpointr/raspberrypi/wiki/API#pointer-messages). The volume control of a device is a typical use cases for the circle gesture. You can check our application examples ([Music Player](https://github.com/airpointr/raspberrypi/wiki/Music-Player) and [Media Player](https://github.com/airpointr/raspberrypi/wiki/Media-Center)) to learn how to use this gesture. ## 2. Wipes The wipe gesture is triggered by a continuous horizontal hand movement that covers a major part of the cameras viewfield. The ouput differentiates between a left wipe and a right wipe. This information is reflected in the pointer message as described [here](https://github.com/airpointr/raspberrypi/wiki/API#message).
The recognition of the wipe gesture is dependent on the selected camera zoomfactor. With zoomfactor 1 wipes can be triggered in a camera distance from 10cm to about 1 meter. With an increased zoomfactor, wipes can be performed in a greater distance. But due to the reduced viewfield of the camera, you have to take the camera orientation into account.## 3. Pointer The AirPointr service recognizes the position of a moving hand and exports the position coordinates with respect to the viewfield of the camera. These coordinates can be used for any kind of pointer based user interface.
Additionally to the pointer coordinates there are the two output variables "active" and "moving" that reflect the current pointer status. The definition of these variables can be found here.## 4. Smart Circle
The smart circle is triggered by a circular hand movement like the normal circle.
The smart circle gesture adds the possibility to distinctly select one of four segments by the way the hand quits the circular movement. The segment is selected if you move your hand from the desired segment through the middle of the initially drawn circle. Dependent on the center and the radius of the activating circle movement, the three areas smart circle area, center area and outer area are defined. The smart circle area lays between the inner circle and the outer circle (see image below), the center area is bounded by the inner circle and the outer area lays beyond the outer area. The smart circle stays active as long as the pointer stays active inside the smart circle area. When the pointer leaves the smart circle area and enters the center area, the action "select" is triggered. This action deactivates the smart circle and the output variable "actionSegment" reflects the segment that was active when the last action happened. Leaving the smart circle area towards the outer area triggers the action "left" and also deactivates the smart circle. Again the variable "actionSegment" is updated once the action happens. No selection is made if you quit your movement staying inside the smart circle area.
Entering the inner circle triggers the "select" action.
Leaving the outer circle triggers the "left" action.
All areas are positioned realtive to the center of the circular movement and scaled relative the radius of the initial activating circle. That means you can draw your circle anywhere in the viewfield of the camera.