Exemplo n.º 1
0
 private bool IsValid(GesturePosition gesturePosition)
 {
     bool isValid = gesturePosition.RightHand.Y > gesturePosition.RightShoulder.Y &&
            gesturePosition.LeftHand.Y > gesturePosition.LeftShoulder.Y;
     return isValid;
 }
Exemplo n.º 2
0
 private void ValidateTime(object value)
 {
     if ((DateTime.Now - LastUpdate()).TotalSeconds > 1)
     {
         _initialGesture = null;
     }
 }
Exemplo n.º 3
0
 private void Initialize(GesturePosition gesturePosition)
 {
     if (IsStart(gesturePosition))
     {
         System.Diagnostics.Debug.WriteLine("Got initial gesture!");
         if(_initialGesture == null)
             _initialGesture = gesturePosition;
         else if (GetDistance(gesturePosition) < GetDistance(_initialGesture))
             _initialGesture = gesturePosition;
     }
 }
Exemplo n.º 4
0
 private bool IsStart(GesturePosition gesturePosition)
 {
     return .06 > Math.Abs((gesturePosition.RightHand - gesturePosition.LeftHand).Length);
 }
Exemplo n.º 5
0
 private double GetRatio(GesturePosition gesturePosition)
 {
     double handDist = GetDistance(gesturePosition) - GetDistance(_initialGesture);
     double shoulderDist = Math.Abs((gesturePosition.RightShoulder - gesturePosition.LeftShoulder).Length);
     double ratio = (handDist/3)/shoulderDist;
     return Math.Max(0, Math.Min(1, ratio));
 }
Exemplo n.º 6
0
 private double GetDistance(GesturePosition gesturePosition)
 {
     return Math.Abs((gesturePosition.RightHand - gesturePosition.LeftHand).Length);
 }
Exemplo n.º 7
0
        public void UpdatePosition(GesturePosition gesturePostition)
        {
            if((DateTime.Now - LastUpdate()).TotalSeconds > 1)
                UpdateTime();
                gesturePostition.PrintGesture();
            //            if (!IsValid(gesturePostition))
            //            {
            //                _initialGesture = null;
            //                return;
            //            }
            //            Initialize(gesturePostition);
            //            if(_initialGesture != null)
            //                CurrentPortion = GetRatio(gesturePostition);
            //            if (DateTime.Now - new TimeSpan(0, 0, 1) > _lastPrint)
            //            {
            //                gesturePostition.PrintGesture();
            //                double handDistance = Math.Abs((gesturePostition.RightHand - gesturePostition.LeftHand).Length);
            //                double shoulderDistance =
            //                    Math.Abs((gesturePostition.RightShoulder - gesturePostition.LeftShoulder).Length);
            //                System.Diagnostics.Debug.WriteLine("Hand Distance: {0}", handDistance);
            //                System.Diagnostics.Debug.WriteLine("Shoulder Distance: {0}", shoulderDistance);

            //                _lastPrint = DateTime.Now;
            //            }
        }
Exemplo n.º 8
0
 //        public double GesturePortion { get { return _gestureState.CurrentPortion; } }
 private void SkeletonFrameReady(object sender, BodyFrameArrivedEventArgs e)
 {
     using (BodyFrame bodyFrame = e.FrameReference.AcquireFrame()) // Open the Skeleton frame
     {
         if (bodyFrame != null)
         {
             if (_bodies == null)
             {
                 _bodies = new Body[bodyFrame.BodyCount];
                 _gesturePositions = new GesturePosition[bodyFrame.BodyCount];
                 for (int i = 0; i < _gesturePositions.Length; i++)
                 {
                     _gesturePositions[i] = new GesturePosition() {IsTracked = false};
                 }
             }
             bodyFrame.GetAndRefreshBodyData(this._bodies);
             HandleSkeletonUpdate(_bodies);
         }
     }
 }
        private void HandleGestureUpdate(GesturePosition[] gesturePositions, int lastBodyIndex)
        {
            lock (_taskLock)
            {
                if (_currentTask != null)
                {
                    return;
                }
                _currentTask = Task.Factory.StartNew(() =>
                {
                    try
                    {
                        GesturePosition gesturePosition = gesturePositions[_bodyIndex];
                        IOrdering ordering = null;
                        if (gesturePosition.IsTracked)
                        {
                            ordering = GetOrdering(Scene, gesturePosition.Head);
                        }
                        lock (_gestureLock)
                        {
                            if (ordering != null)
                                _ordering = ordering;
                            if (!_tracked && gesturePosition.IsTracked)
                                _restart = true;
                            _tracked = gesturePosition.IsTracked;
                            _isLast = _bodyIndex == lastBodyIndex;
                        }
                    }
                    finally
                    {
                        lock (_taskLock)
                        {
                            _currentTask = null;
                        }

                    }
                });
            }
        }