Remove Averaging Samples in MLFIlter

This commit is contained in:
X9VoiD 2020-09-27 10:11:36 +08:00
parent 2b794038c7
commit b17d27d466
No known key found for this signature in database
GPG key ID: 3AC5DBB8A2717CFF

View file

@ -9,35 +9,16 @@ using OpenTabletDriver.Plugin.Tablet;
namespace OTDPlugins
{
[PluginName("MLFilter")]
public class MLFilter : Notifier, IFilter
{
public virtual Vector2 Filter(Vector2 point)
{
DateTime date = DateTime.Now;
var predicted = new Vector2();
var feedPoint = new Vector2();
bool fed = false;
if (Feed)
{
if (AddPoint(point))
{
foreach (var lastPoint in _lastPoints)
feedPoint += lastPoint;
feedPoint.X /= _lastPoints.Count;
feedPoint.Y /= _lastPoints.Count;
fed = AddTimeSeriesPoint(feedPoint, date);
}
}
else
{
fed = AddTimeSeriesPoint(point, date);
}
if (fed)
if (AddTimeSeriesPoint(point, date))
{
var predicted = new Vector2();
var timeMatrix = ConstructTimeDesignMatrix();
double[] x, y;
if (Normalize)
@ -69,32 +50,14 @@ namespace OTDPlugins
predicted.X = (float)xCoeff.Evaluate(predictAhead);
predicted.Y = (float)yCoeff.Evaluate(predictAhead);
if (Normalize)
{
predicted.X *= ScreenWidth;
predicted.Y *= ScreenHeight;
}
Vector2 finalPoint = new Vector2();
if (Feed || AvgSamples == 0)
finalPoint = predicted;
else
{
if (AddPoint(predicted) && AvgSamples > 0)
{
foreach (var tempPoint in _lastPoints)
{
finalPoint += tempPoint;
}
finalPoint.X /= _lastPoints.Count;
finalPoint.Y /= _lastPoints.Count;
}
}
_lastTime = date;
return finalPoint;
return predicted;
}
_lastTime = date;
return point;
@ -110,16 +73,6 @@ namespace OTDPlugins
return false;
}
private bool AddPoint(Vector2 point)
{
_lastPoints.AddLast(point);
if (_lastPoints.Count > AvgSamples)
_lastPoints.RemoveFirst();
if (_lastPoints.Count == AvgSamples)
return true;
return false;
}
private double[] ConstructTimeDesignMatrix()
{
DateTime baseTime = _timeSeriesPoints.First.Value.Date;
@ -273,12 +226,6 @@ namespace OTDPlugins
[UnitProperty("Screen Height", "px")]
public int ScreenHeight { set; get; }
[Property("Averaging Samples")]
public int AvgSamples { set; get; }
[BooleanProperty("Feed to Filter", "")]
public bool Feed { set; get; }
public FilterStage FilterStage => FilterStage.PostTranspose;
}