Exemplo n.º 1
0
        private bool CompareJointRelationship(Joint inJoint1, Joint inJoint2, JointRelationship relation)
        {
            if ((inJoint1.JointType.ToString().Contains("WristRight")))
            {
                if (inJoint2.JointType.ToString().Contains("ShoulderCenter"))
                {
                    sizeOfArm = inJoint2.Position.Z - inJoint1.Position.Z;
                    if ((sizeOfArm > 0.5) && (!gest))
                    {
                        gest = true;
                        Debug.WriteLine("Arm Size:" + sizeOfArm.ToString());
                        Debug.WriteLine("Forward Gesture Detected: " + gest);
                        GestureMapState.Connect("169.254.27.218", 4);
                    }
                    else
                    if ((sizeOfArm < 0.3) && (gest))
                    {
                        gest = false;
                    }
                }
            }
            if (inJoint2.JointType.ToString().Contains("WristRight"))
            {
                Debug.WriteLine("Posicao da junta " + inJoint2.JointType + " #2 em Z: " + inJoint2.Position.Z);
            }

            switch (relation)
            {
            case JointRelationship.None:
                return(true);

            case JointRelationship.AboveAndLeft:
                return((inJoint1.Position.X < inJoint2.Position.X) && (inJoint1.Position.Y < inJoint2.Position.Y));

            case JointRelationship.AboveAndRight:
                return((inJoint1.Position.X > inJoint2.Position.X) && (inJoint1.Position.Y < inJoint2.Position.Y));

            case JointRelationship.BelowAndLeft:
                return((inJoint1.Position.X < inJoint2.Position.X) && (inJoint1.Position.Y > inJoint2.Position.Y));

            case JointRelationship.BelowAndRight:
                return((inJoint1.Position.X > inJoint2.Position.X) && (inJoint1.Position.Y > inJoint2.Position.Y));

            case JointRelationship.Behind:
                return((inJoint1.Position.Z < inJoint2.Position.Z));

            case JointRelationship.InFrontOf:
                return((inJoint1.Position.Z > inJoint2.Position.Z));

            case JointRelationship.Below:
                return(inJoint1.Position.Y > inJoint2.Position.Y);

            case JointRelationship.Above:
                return(inJoint1.Position.Y < inJoint2.Position.Y);

            case JointRelationship.LeftOf:
                return(inJoint1.Position.X < inJoint2.Position.X);

            case JointRelationship.RightOf:
                return(inJoint1.Position.X > inJoint2.Position.X);
            }
            return(false);
        }