Exemplo n.º 1
0
        /// <summary>
        /// This method calculates the type of eye movement given a new point
        /// </summary>
        /// <param name="newPoint">New point</param>
        public void CalculateEyeMovement(GTPoint newPoint)
        {
            long time = DateTime.UtcNow.Ticks / TimeSpan.TicksPerMillisecond;

            AddNewPoint(newPoint, time);

            if (recentPoints.Count > 1)
            {
                if (Operations.GetMaxDistanceOnWindow(recentPoints) < Settings.Instance.EyeMovement.MaxDispersion)
                {
                    CalculateVelocity();
                    if (velocities[velocities.Count - 1] > Settings.Instance.EyeMovement.MaxAngularSpeed)
                    {
                        eyeMovementState = EyeMovementStateEnum.NoFixation;
                    }
                    else
                    {
                        eyeMovementState = EyeMovementStateEnum.Fixation;
                    }
                }
                else
                {
                    eyeMovementState = EyeMovementStateEnum.NoFixation;
                }
            }
            else
            {
                eyeMovementState = EyeMovementStateEnum.NoFixation;
            }

            if (eyeMovementState == EyeMovementStateEnum.NoFixation)
            {
                if (TrackDB.Instance.GetLastSample().EyeMovement == EyeMovementStateEnum.Fixation)
                {
                    recentPoints.Clear();
                    Settings.Instance.EyeMovement.WindowSize = 2;
                    AddNewPoint(newPoint, time);
                }
            }
            else
            {
                Settings.Instance.EyeMovement.WindowSize = Math.Min(Settings.Instance.EyeMovement.WindowSize,
                                                                    Settings.Instance.EyeMovement.MaxWindowSize);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// This method calculates the type of eye movement given a new point
        /// </summary>
        /// <param name="newPoint">New point</param>
        public void CalculateEyeMovement(GTPoint newPoint)
        {
            long time = DateTime.UtcNow.Ticks/TimeSpan.TicksPerMillisecond;
            AddNewPoint(newPoint, time);

            if (recentPoints.Count > 1)
            {
                if (Operations.GetMaxDistanceOnWindow(recentPoints) < Settings.Instance.EyeMovement.MaxDispersion)
                {
                    CalculateVelocity();
                    if (velocities[velocities.Count - 1] > Settings.Instance.EyeMovement.MaxAngularSpeed)
                        eyeMovementState = EyeMovementStateEnum.NoFixation;
                    else
                        eyeMovementState = EyeMovementStateEnum.Fixation;
                }
                else
                    eyeMovementState = EyeMovementStateEnum.NoFixation;
            }
            else
                eyeMovementState = EyeMovementStateEnum.NoFixation;

            if (eyeMovementState == EyeMovementStateEnum.NoFixation)
            {
                if (TrackDB.Instance.GetLastSample().EyeMovement == EyeMovementStateEnum.Fixation)
                {
                    recentPoints.Clear();
                    Settings.Instance.EyeMovement.WindowSize = 2;
                    AddNewPoint(newPoint, time);
                }
            }
            else
                Settings.Instance.EyeMovement.WindowSize = Math.Min(Settings.Instance.EyeMovement.WindowSize,
                                                                     Settings.Instance.EyeMovement.MaxWindowSize);
        }