示例#1
0
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (sB.handLeft.Position.Y < sB.hipLeft.Position.Y &&
                sB.handRight.Position.Y < sB.hipRight.Position.Y

                && sB.handLeft.Position.Y < sB.elbowLeft.Position.Y &&
                Math.Abs(sB.wristLeft.Position.Y - sB.elbowLeft.Position.Y) > 0.10

                && sB.handRight.Position.Y < sB.elbowRight.Position.Y &&
                Math.Abs(sB.handRight.Position.Y - sB.elbowRight.Position.Y) > 0.10

                && sB.handLeft.Position.X > sB.elbowLeft.Position.X &&
                Math.Abs(sB.handLeft.Position.X - sB.elbowLeft.Position.X) > 0.05

                && sB.handRight.Position.X < sB.elbowRight.Position.X &&
                Math.Abs(sB.handRight.Position.X - sB.elbowRight.Position.X) > 0.05

                && sB.handLeft.Position.X > sB.kneeLeft.Position.X &&
                sB.handLeft.Position.X < sB.kneeRight.Position.X

                && sB.handRight.Position.X < sB.kneeRight.Position.X &&
                sB.handRight.Position.X > sB.kneeLeft.Position.X
                )
            {
                if (Math.Abs(sB.footLeft.Position.X - sB.footRight.Position.X) > 0.25)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            return(GesturePartResult.Fail);
        }
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (sB.head.Position.Z < sB.waist.Position.Z &&
                sB.handLeft.Position.Y + 0.25 < sB.waist.Position.Y)
            {
                if (Math.Abs(sB.handLeft.Position.X - sB.kneeLeft.Position.X) < 0.10 &&
                    Math.Abs(sB.kneeLeft.Position.X - sB.handRight.Position.X) < 0.20)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            else if (sB.head.Position.Z < sB.waist.Position.Z &&
                     sB.handRight.Position.Y + 0.25 < sB.waist.Position.Y)
            {
                if (Math.Abs(sB.handRight.Position.X - sB.kneeRight.Position.X) < 0.10 &&
                    Math.Abs(sB.kneeLeft.Position.X - sB.handRight.Position.X) < 0.20)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            return(GesturePartResult.Fail);
        }
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (sB.footRight.Position.Z < sB.footLeft.Position.Z &&
                Math.Abs(sB.footLeft.Position.Z - sB.footRight.Position.Z) > 0.30 &&
                Math.Abs(sB.footLeft.Position.X - sB.footRight.Position.X) < 0.20 &&
                Math.Abs(sB.footLeft.Position.Y - sB.footRight.Position.Y) < 0.10

                && sB.handRight.Position.Z < sB.handLeft.Position.Z &&
                Math.Abs(sB.handLeft.Position.Z - sB.handRight.Position.Z) > 0.60 &&
                sB.handLeft.Position.X < sB.neck.Position.X &&
                sB.handRight.Position.X > sB.neck.Position.X &&
                Math.Abs(sB.handLeft.Position.X - sB.handRight.Position.X) < 0.60

                && sB.handLeft.Position.Y < sB.neck.Position.Y &&
                sB.handRight.Position.Y > sB.neck.Position.Y)
            {
                if (Math.Abs(sB.footLeft.Position.Z - sB.footRight.Position.Z) > 0.40 &&
                    Math.Abs(sB.handLeft.Position.Z - sB.handRight.Position.Z) > 0.90)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            return(GesturePartResult.Fail);
        }
示例#4
0
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (Math.Abs(sB.footRight.Position.Y - sB.footLeft.Position.Y) < 0.08)
            {
                if (sB.handLeft.Position.Y > sB.head.Position.Y + 0.15 &&
                    sB.handRight.Position.Y < sB.waist.Position.Y)
                {
                    if ((sB.handLeft.Position.X - sB.head.Position.X) < 0.30)
                    {
                        return(GesturePartResult.Success);
                    }
                    return(GesturePartResult.Undetermined);
                }
                else if (sB.handRight.Position.Y > sB.head.Position.Y + 0.15 &&
                         sB.handLeft.Position.Y < sB.waist.Position.Y)
                {
                    if ((sB.head.Position.X - sB.handRight.Position.X) < 0.30)
                    {
                        return(GesturePartResult.Success);
                    }
                    return(GesturePartResult.Undetermined);
                }
            }
            return(GesturePartResult.Fail);
        }
示例#5
0
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (sB.handLeft.Position.Y > sB.neck.Position.Y &&
                sB.handLeft.Position.Y < sB.head.Position.Y &&
                sB.handLeft.Position.X > sB.shoulderLeft.Position.X &&
                sB.handLeft.Position.X < sB.shoulderRight.Position.X &&
                Math.Abs(sB.handLeft.Position.Y - sB.elbowLeft.Position.Y) < 0.10

                && sB.handRight.Position.Y > sB.neck.Position.Y &&
                sB.handRight.Position.Y < sB.head.Position.Y &&
                sB.handRight.Position.X > sB.shoulderLeft.Position.X &&
                sB.handRight.Position.X < sB.shoulderRight.Position.X &&
                Math.Abs(sB.handRight.Position.Y - sB.elbowRight.Position.Y) < 0.10
                )
            {
                if (Math.Abs(sB.kneeLeft.Position.X - sB.kneeRight.Position.X) < 0.20)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            return(GesturePartResult.Fail);
        }
示例#6
0
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (sB.head.Position.Z >= sB.handRight.Position.Z + 0.30)
            {
                if (Math.Abs(sB.head.Position.X - sB.handRight.Position.X) <= 0.15)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            return(GesturePartResult.Fail);
        }
示例#7
0
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (Math.Abs(sB.handLeft.Position.Y - sB.handRight.Position.Y) < 0.10 &&
                sB.handRight.Position.Y > sB.head.Position.Y)
            {
                if (Math.Abs(sB.kneeLeft.Position.X - sB.kneeRight.Position.X) > 0.30 &&
                    Math.Abs(sB.handLeft.Position.X - sB.handRight.Position.X) > 0.60)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            return(GesturePartResult.Fail);
        }
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (sB.handRight.Position.X - 0.20 > sB.footRight.Position.X &&
                sB.handRight.Position.X - 0.60 > sB.neck.Position.X &&
                sB.handLeft.Position.Y < sB.waist.Position.Y)
            {
                if (Math.Abs(sB.handRight.Position.Y - sB.neck.Position.Y) < 0.10)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            return(GesturePartResult.Fail);
        }
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (sB.footLeft.Position.Y > sB.footRight.Position.Y + 0.10 &&
                sB.footLeft.Position.X + 0.15 < sB.footRight.Position.X &&
                sB.handLeft.Position.Y < sB.waist.Position.Y)
            {
                if (sB.handRight.Position.Y > sB.head.Position.Y &&
                    (sB.handRight.Position.X - sB.footRight.Position.X) > 0.30)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            return(GesturePartResult.Fail);
        }
        public GesturePartResult Update(Skeleton skeleton)
        {
            SkeletonB sB = new SkeletonB(skeleton);

            if (Math.Abs(sB.elbowRight.Position.Y - sB.neck.Position.Y) <= 0.10 &&
                Math.Abs(sB.elbowLeft.Position.Y - sB.neck.Position.Y) <= 0.10)
            {
                if (Math.Abs(sB.elbowRight.Position.X - sB.handRight.Position.X) <= 0.08 &&
                    Math.Abs(sB.elbowLeft.Position.X - sB.handLeft.Position.X) <= 0.08 &&
                    Math.Abs(sB.handLeft.Position.Y - sB.handRight.Position.Y) <= 0.08)
                {
                    return(GesturePartResult.Success);
                }
                return(GesturePartResult.Undetermined);
            }
            return(GesturePartResult.Fail);
        }