/// <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); } }
/// <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); }