예제 #1
0
 public GestureComponent(JointType j1, JointType j2, JointRelationship begin, JointRelationship end)
 {
     Joint1 = j1;
     Joint2 = j2;
     Begin  = begin;
     Ending = end;
 }
예제 #2
0
        private bool CompareJointRelationship(Joint inJoint1, Joint inJoint2, JointRelationship relation)
        {
            switch (relation)
            {
            case JointRelationship.None:
                return(true);

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

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

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

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

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

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

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

            case JointRelationship.RightOf:
                return(inJoint1.Position.X > inJoint2.Position.X);
            }
            return(false);
        }
        public GestureComponent(JointType joint1, JointType joint2, JointRelationship endingRelationship, JointRelationship beginningRelationship = JointRelationship.None)
        {
            Joint1 = joint1;
            Joint2 = joint2;

            EndingRelationship = endingRelationship;
            BeginningRelationship = beginningRelationship;
        }
예제 #4
0
        public GestureComponent(JointType joint1, JointType joint2, JointRelationship endingRelationship, JointRelationship beginningRelationship = JointRelationship.None)
        {
            Joint1 = joint1;
            Joint2 = joint2;

            EndingRelationship    = endingRelationship;
            BeginningRelationship = beginningRelationship;
        }
예제 #5
0
        // ------------------------------------------
        //  Parser
        // ------------------------------------------

        public static GestureComponent Parse(XmlTextReader reader)
        {
            GestureComponent component = new GestureComponent();

            var j1 = reader.GetAttribute("firstJoint");

            if (j1 != null)
            {
                JointType join = (JointType)(Enum.Parse(typeof(JointType), j1));
                component.Joint1 = join;
            }

            var j2 = reader.GetAttribute("secondJoint");

            if (j2 != null)
            {
                JointType join = (JointType)(Enum.Parse(typeof(JointType), j2));
                component.Joint2 = join;
            }

            var begin = reader.GetAttribute("beginningRelationship");

            if (begin != null)
            {
                JointRelationship rs = (JointRelationship)(Enum.Parse(typeof(JointRelationship), begin));
                component.Begin = rs;
            }

            var end = reader.GetAttribute("endingRelationship");

            if (end != null)
            {
                JointRelationship rs = (JointRelationship)(Enum.Parse(typeof(JointRelationship), end));
                component.Ending = rs;
            }

            return(component);
        }
        private bool CompareJointRelationship(Joint inJoint1, Joint inJoint2, JointRelationship relation)
        {
            switch (relation)
            {
                case JointRelationship.None:
                    return true;

                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;
                case JointRelationship.Front:
                    return inJoint1.Position.Z < inJoint2.Position.Z;
                case JointRelationship.Behind:
                    return inJoint1.Position.Z > inJoint2.Position.Z;

                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.FrontAbove:
                    return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y));
                case JointRelationship.FrontBelow:
                    return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y));
                case JointRelationship.FrontLeftOf:
                    return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.X < inJoint2.Position.X));
                case JointRelationship.FrontRightOf:
                    return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.X > inJoint2.Position.X));

                case JointRelationship.FrontAboveAndRight:
                    return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y) && (inJoint1.Position.X > inJoint2.Position.X));
                case JointRelationship.FrontBelowAndRight:
                    return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y) && (inJoint1.Position.X > inJoint2.Position.X));
                case JointRelationship.FrontAboveAndLeft:
                    return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y) && (inJoint1.Position.X < inJoint2.Position.X));
                case JointRelationship.FrontBelowAndLeft:
                    return ((inJoint1.Position.Z < inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y) && (inJoint1.Position.X < inJoint2.Position.X));

                case JointRelationship.BehindAbove:
                    return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y));
                case JointRelationship.BehindBelow:
                    return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y));
                case JointRelationship.BehindLeftOf:
                    return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.X < inJoint2.Position.X));
                case JointRelationship.BehindRightOf:
                    return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.X > inJoint2.Position.X));

                case JointRelationship.BehindAboveAndRight:
                    return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y) && (inJoint1.Position.X > inJoint2.Position.X));
                case JointRelationship.BehindBelowAndRight:
                    return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y) && (inJoint1.Position.X > inJoint2.Position.X));
                case JointRelationship.BehindAboveAndLeft:
                    return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y < inJoint2.Position.Y) && (inJoint1.Position.X < inJoint2.Position.X));
                case JointRelationship.BehindBelowAndLeft:
                    return ((inJoint1.Position.Z > inJoint2.Position.Z) && (inJoint1.Position.Y > inJoint2.Position.Y) && (inJoint1.Position.X < inJoint2.Position.X));
            }
            return false;
        }
예제 #7
0
 public GestureComponent(JointType j1, JointType j2, JointRelationship begin, JointRelationship end)
 {
     Joint1 = j1;
       Joint2 = j2;
       Begin = begin;
       Ending = end;
 }
예제 #8
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;
        }
예제 #9
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);
        }