private void processTouchVectors(MotionAverages averages)
        {
            switch (this.state)
            {
            case MotionGestureRecognizerState.MotionGestureRecognizerStatePossible:
                if (averages.velocityAverage.y < MotionTapDownBeginYThreshold && averages.velocityAverage.z < MotionTapDownBeginZThreshold)
                {
                    this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionDown;
                    this.state     = MotionGestureRecognizerState.MotionGestureRecognizerStateBegan;
                }
                break;

            case MotionGestureRecognizerState.MotionGestureRecognizerStateBegan:
                this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateChanged;
                if (averages.velocityAverage.y > MotionTapDownBeginYThreshold && averages.velocityAverage.z > MotionTapDownBeginZThreshold)
                {
                    this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionUp;
                }
                break;

            case MotionGestureRecognizerState.MotionGestureRecognizerStateChanged:
                this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateChanged;

                if (averages.velocityAverage.y > MotionTapDownBeginZThreshold && averages.velocityAverage.z > MotionTapDownBeginZEndThreshold)
                {
                    this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionUp;
                    this.state     = MotionGestureRecognizerState.MotionGestureRecognizerStateEnded;
                }
                else if (averages.velocityAverage.y > MotionTapDownBeginYThreshold && averages.velocityAverage.z > MotionTapDownBeginZThreshold)
                {
                    this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionUp;
                }
                break;

            case MotionGestureRecognizerState.MotionGestureRecognizerStateEnded:
                this.state = MotionGestureRecognizerState.MotionGestureRecognizerStatePossible;
                break;

            default:
                break;
            }
        }
        private void processTouchVectors(MotionAverages averages)
        {
            switch (this.state)
            {
                case MotionGestureRecognizerState.MotionGestureRecognizerStatePossible:
                    if (averages.velocityAverage.y < MotionTapDownBeginYThreshold && averages.velocityAverage.z < MotionTapDownBeginZThreshold)
                    {
                        this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionDown;
                        this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateBegan;
                    }
                    break;
                case MotionGestureRecognizerState.MotionGestureRecognizerStateBegan:
                    this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateChanged;
                    if (averages.velocityAverage.y > MotionTapDownBeginYThreshold && averages.velocityAverage.z > MotionTapDownBeginZThreshold)
                    {
                        this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionUp;
                    }
                    break;
                case MotionGestureRecognizerState.MotionGestureRecognizerStateChanged:
                    this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateChanged;

                    if (averages.velocityAverage.y > MotionTapDownBeginZThreshold && averages.velocityAverage.z > MotionTapDownBeginZEndThreshold)
                    {
                        this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionUp;
                        this.state = MotionGestureRecognizerState.MotionGestureRecognizerStateEnded;
                    }
                    else if (averages.velocityAverage.y > MotionTapDownBeginYThreshold && averages.velocityAverage.z > MotionTapDownBeginZThreshold)
                    {
                        this.Direction = MotionTapGestureRecognizerDirection.MotionTapGestureRecognizerDirectionUp;
                    }
                    break;
                case MotionGestureRecognizerState.MotionGestureRecognizerStateEnded:
                    this.state = MotionGestureRecognizerState.MotionGestureRecognizerStatePossible;
                    break;
                default:
                    break;
            }
        }