I am producing a physics teaching platform using XNA C# + Kinect. A user may set up a scene with objects, including:
The obvious fun thing to do is to use different gestures to represent an object. Plane seems to be the easiest one so I intend to start there.
The flow of inputting an object is like this:
- Choosing an object (through gesture recognition)
- Scale the object
- Rotate the object
- Place the object
Here is my idea. We track 6 joints of the upper body:
- LEFT + RIGHT wrist
- LEFT + RIGHT elbow
- LEFT + RIGHT shoulder
If this set of points is collinear, i.e. both arms held horizontal, we will say this is a input gesture for a plane.
If my idea is to be used, then there is a need to determine how collinear the points are, for example, some algorithm which returns the "collinearality" of a set of points as a float in interval [0, 1]. Then I can say, for example, anything >0.9 will be accepted as a plane, allowing some room for error.
Alternatively, the idea of "Template Based Posture Detection" sounds great, stated in the link below:
But from what I understand, this seems to be a generic learning algorithm for ANY gestures. I would tend to write something on my own to try out Kinect as a start.
So... does anyone know of any existing algorithm that determines the degree of "collinearness" of a set of points?