private bool checkCircleGesture(List<KinectDataPoint> queue, InteractionCircle direction)
        {
            for (int i = 0; i < queue.Count; ++i)
            {
                if (checkCircleGesture(queue, i, direction))
                {
                    return true;
                }
            }

            return false;
        }
        private bool checkCircleGesture(List<KinectDataPoint> queue, int stepSize, InteractionCircle direction)
        {
            int minPoints = stepSize * 4 + 1;

            for (int i = 0; i < queue.Count - minPoints; ++i)
            {
                KinectDataPoint p1 = queue.ElementAt(i);
                KinectDataPoint p4 = queue.ElementAt(i + (3 * stepSize));

                if (p1.TimeStamp.AddMilliseconds(maxCircleTime) < p4.TimeStamp)
                {
                    break;
                }

                KinectDataPoint p2 = queue.ElementAt(i + stepSize);
                KinectDataPoint p3 = queue.ElementAt(i + (2 * stepSize));

                double diag1 = p1.CalcScreenDistance(p3);
                double diag2 = p2.CalcScreenDistance(p4);
                double dist1 = p1.CalcScreenDistance(p2);
                double dist2 = p2.CalcScreenDistance(p3);
                double dist3 = p3.CalcScreenDistance(p4);
                double dist4 = p4.CalcScreenDistance(p1);

                if (diag1 > IConsts.GCircleDiameter && diag2 > IConsts.GCircleDiameter)
                {
                    if (Math.Abs(dist1 - dist2) < IConsts.GCircleGitterXY && Math.Abs(dist2 - dist3) < IConsts.GCircleGitterXY &&
                        Math.Abs(dist3 - dist4) < IConsts.GCircleGitterXY && Math.Abs(dist4 - dist1) < IConsts.GCircleGitterXY)
                    {
                        // TODO: improve circle direction detection
                        if (getDirection(new KinectDataPoint[] { p1, p2, p3, p4 }) == direction)
                        {
                            return true;
                        }
                    }
                }
            }

            return false;
        }