public Point GetNextPoint(Point warpPoint) { System.Drawing.Rectangle screenSize = ScreenPixelHelper.GetScreenSize(); trans = this.getTranslation(); if (trans != null) { warpPoint.Offset((int)(trans.x * sensitivity), (int)(trans.y * sensitivity)); } return(warpPoint); }
public Point calculateSmoothedPoint() { //if current point is more than some percentage the screen away, then set to new warp point //and refresh tracking if (largeSaccadeDetected(ScreenPixelHelper.ConvertMmToPixels(Properties.Settings.Default.largeSaccadeThresholdMm))) { warpPoint = samples[sampleIndex]; RefreshTracking(); //Fill rest of array with the same item for (int i = 0; i < samples.Length; i++) { samples[i] = warpPoint; } } return(calculateTrimmedMean()); }
//screenPercent is between 0 and 100 public bool largeSaccadeDetected(double screenPercent) { Point currentPoint = samples[sampleIndex]; //get screen percent in terms of pixels System.Drawing.Rectangle screenSize = ScreenPixelHelper.GetScreenSize(); //find hypotenuse of distance in pixels for screenpercentage double pixelsThreshold = Math.Sqrt(Math.Pow(screenSize.Width, 2) + Math.Pow(screenSize.Height, 2)) * screenPercent / 100; Point saccadeDiff = new Point(Math.Abs(currentPoint.X - GetWarpPoint().X), Math.Abs(currentPoint.Y - GetWarpPoint().Y)); double saccadeDiffPixels = Math.Sqrt(Math.Pow(saccadeDiff.X, 2) + Math.Pow(saccadeDiff.Y, 2)); if (saccadeDiffPixels > pixelsThreshold) { return(true); } return(false); }