Пример #1
0
        // check if the final pose has reached
        protected override bool ValidateGestureEndCondition(Skeleton skeleton)
        {
            // distance between the staring right hand position and
            // the last right hand position
            double distance = Math.Abs(startingPostion.X - validatePosition.X);
            // the distance between the current right hand and the left shoulder
            float currentshoulderDiff = GestureHelper.GetJointDistance(skeleton.Joints[JointType.HandRight], skeleton.Joints[JointType.ShoulderLeft]);

            // the right hand has moved for 0.1m since its starting position and
            // the right hand is getting closer to the left shoulder => we are done!
            if (distance > 0.1 && currentshoulderDiff < shoulderDiff)
            {
                return(true);
            }

            // otherwise, the right hand has not moved enough distance yet
            return(false);
        }
Пример #2
0
        // check to see if the starting pose is seen
        // called for every skeleton frame received
        //protected override bool ValidateGestureStartCondition(Skeleton skeleton) { }

        protected override bool ValidateGestureStartCondition(Skeleton skeleton)
        {
            var handRightPoisition    = skeleton.Joints[JointType.HandRight].Position;
            var handLeftPosition      = skeleton.Joints[JointType.HandLeft].Position;
            var shoulderRightPosition = skeleton.Joints[JointType.ShoulderRight].Position;
            var spinePosition         = skeleton.Joints[JointType.Spine].Position;

            // Starting pose:
            // right hand lower than right shoulder && right hand higher than right elbow
            // && left hand lower than spine
            if ((handRightPoisition.Y < shoulderRightPosition.Y) &&
                (handRightPoisition.Y > skeleton.Joints[JointType.ElbowRight].Position.Y) &&
                handLeftPosition.Y < spinePosition.Y)
            {
                shoulderDiff     = GestureHelper.GetJointDistance(skeleton.Joints[JointType.HandRight], skeleton.Joints[JointType.ShoulderLeft]);
                validatePosition = skeleton.Joints[JointType.HandRight].Position;
                startingPostion  = skeleton.Joints[JointType.HandRight].Position;
                return(true);
            }
            return(false);
        }