From b6254f32a6cfbd40bd1919950b344160f38bf1e4 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Wed, 12 Aug 2020 19:51:38 -0700 Subject: Factor accel calculations into calculation classes --- grapher/Models/Calculations/AccelData.cs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 grapher/Models/Calculations/AccelData.cs (limited to 'grapher/Models/Calculations/AccelData.cs') diff --git a/grapher/Models/Calculations/AccelData.cs b/grapher/Models/Calculations/AccelData.cs new file mode 100644 index 0000000..d304660 --- /dev/null +++ b/grapher/Models/Calculations/AccelData.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace grapher.Models.Calculations +{ + public class AccelData + { + public AccelData() + { + OrderedAccelPoints = new SortedDictionary(); + OrderedVelocityPoints = new SortedDictionary(); + OrderedGainPoints = new SortedDictionary(); + } + + public SortedDictionary OrderedAccelPoints { get; } + + public SortedDictionary OrderedVelocityPoints { get; } + + public SortedDictionary OrderedGainPoints { get; } + + public void Clear() + { + OrderedAccelPoints.Clear(); + OrderedVelocityPoints.Clear(); + OrderedGainPoints.Clear(); + } + + } +} -- cgit v1.2.3 From 30e1391b224ae028f4476e06a07415a0285ac6c9 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Wed, 12 Aug 2020 20:39:53 -0700 Subject: Almost working --- grapher/Models/Calculations/AccelData.cs | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'grapher/Models/Calculations/AccelData.cs') diff --git a/grapher/Models/Calculations/AccelData.cs b/grapher/Models/Calculations/AccelData.cs index d304660..a2a6a3a 100644 --- a/grapher/Models/Calculations/AccelData.cs +++ b/grapher/Models/Calculations/AccelData.cs @@ -10,23 +10,22 @@ namespace grapher.Models.Calculations { public AccelData() { - OrderedAccelPoints = new SortedDictionary(); - OrderedVelocityPoints = new SortedDictionary(); - OrderedGainPoints = new SortedDictionary(); + Combined = new AccelChartData(); + X = new AccelChartData(); + Y = new AccelChartData(); } - public SortedDictionary OrderedAccelPoints { get; } + public AccelChartData Combined { get; } - public SortedDictionary OrderedVelocityPoints { get; } + public AccelChartData X { get; } - public SortedDictionary OrderedGainPoints { get; } + public AccelChartData Y { get; } public void Clear() { - OrderedAccelPoints.Clear(); - OrderedVelocityPoints.Clear(); - OrderedGainPoints.Clear(); + Combined.Clear(); + X.Clear(); + Y.Clear(); } - } } -- cgit v1.2.3 From 93a22c08b3223b040c3a3644fc3c4ef82fc576f0 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 13 Aug 2020 01:52:49 -0700 Subject: Dot to show mouse move --- grapher/Models/Calculations/AccelData.cs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'grapher/Models/Calculations/AccelData.cs') diff --git a/grapher/Models/Calculations/AccelData.cs b/grapher/Models/Calculations/AccelData.cs index a2a6a3a..a8f3307 100644 --- a/grapher/Models/Calculations/AccelData.cs +++ b/grapher/Models/Calculations/AccelData.cs @@ -3,11 +3,13 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using static grapher.AccelCharts; namespace grapher.Models.Calculations { public class AccelData { + public AccelData() { Combined = new AccelChartData(); @@ -27,5 +29,35 @@ namespace grapher.Models.Calculations X.Clear(); Y.Clear(); } + + public void CalculateDots(int x, int y, ref EstimatedPoints estimation) + { + var magnitude = AccelCalculator.Magnitude(x, y); + + estimation.CombinedVelocity.Y = magnitude; + estimation.XVelocity.Y = Math.Abs(x); + estimation.YVelocity.Y = Math.Abs(y); + + (var inCombVel, var combSens, var combGain) = Combined.FindInValuesFromOut(magnitude); + estimation.CombinedVelocity.X = inCombVel; + estimation.CombinedSensitivity.X = inCombVel; + estimation.CombinedGain.X = inCombVel; + estimation.CombinedSensitivity.Y = combSens; + estimation.CombinedGain.Y = combGain; + + (var inXVel, var xSens, var xGain) = X.FindInValuesFromOut(estimation.XVelocity.Y); + estimation.XVelocity.X = inXVel; + estimation.XSensitivity.X = inXVel; + estimation.XGain.X = inXVel; + estimation.XSensitivity.Y = xSens; + estimation.XGain.Y = xGain; + + (var inYVel, var ySens, var yGain) = Y.FindInValuesFromOut(estimation.YVelocity.Y); + estimation.YVelocity.X = inYVel; + estimation.YSensitivity.X = inYVel; + estimation.YGain.X = inYVel; + estimation.YSensitivity.Y = ySens; + estimation.YGain.Y = yGain; + } } } -- cgit v1.2.3 From 6602649bd7f9a9849b25fe55a5e5e8a617f40b70 Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 13 Aug 2020 13:39:40 -0700 Subject: All works smoothly --- grapher/Models/Calculations/AccelData.cs | 63 +++++++++++++++++++------------- 1 file changed, 37 insertions(+), 26 deletions(-) (limited to 'grapher/Models/Calculations/AccelData.cs') diff --git a/grapher/Models/Calculations/AccelData.cs b/grapher/Models/Calculations/AccelData.cs index a8f3307..6fb4767 100644 --- a/grapher/Models/Calculations/AccelData.cs +++ b/grapher/Models/Calculations/AccelData.cs @@ -1,4 +1,5 @@ -using System; +using grapher.Models.Charts; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -10,11 +11,18 @@ namespace grapher.Models.Calculations public class AccelData { - public AccelData() + public AccelData( + EstimatedPoints combined, + EstimatedPoints x, + EstimatedPoints y) { Combined = new AccelChartData(); X = new AccelChartData(); Y = new AccelChartData(); + + Estimated = combined; + EstimatedX = x; + EstimatedY = y; } public AccelChartData Combined { get; } @@ -23,6 +31,12 @@ namespace grapher.Models.Calculations public AccelChartData Y { get; } + private EstimatedPoints Estimated { get; } + + private EstimatedPoints EstimatedX { get; } + + private EstimatedPoints EstimatedY { get; } + public void Clear() { Combined.Clear(); @@ -30,34 +44,31 @@ namespace grapher.Models.Calculations Y.Clear(); } - public void CalculateDots(int x, int y, ref EstimatedPoints estimation) + public void CalculateDots(int x, int y) { var magnitude = AccelCalculator.Magnitude(x, y); - estimation.CombinedVelocity.Y = magnitude; - estimation.XVelocity.Y = Math.Abs(x); - estimation.YVelocity.Y = Math.Abs(y); - (var inCombVel, var combSens, var combGain) = Combined.FindInValuesFromOut(magnitude); - estimation.CombinedVelocity.X = inCombVel; - estimation.CombinedSensitivity.X = inCombVel; - estimation.CombinedGain.X = inCombVel; - estimation.CombinedSensitivity.Y = combSens; - estimation.CombinedGain.Y = combGain; - - (var inXVel, var xSens, var xGain) = X.FindInValuesFromOut(estimation.XVelocity.Y); - estimation.XVelocity.X = inXVel; - estimation.XSensitivity.X = inXVel; - estimation.XGain.X = inXVel; - estimation.XSensitivity.Y = xSens; - estimation.XGain.Y = xGain; - - (var inYVel, var ySens, var yGain) = Y.FindInValuesFromOut(estimation.YVelocity.Y); - estimation.YVelocity.X = inYVel; - estimation.YSensitivity.X = inYVel; - estimation.YGain.X = inYVel; - estimation.YSensitivity.Y = ySens; - estimation.YGain.Y = yGain; + Estimated.Velocity.Set(inCombVel, magnitude); + Estimated.Sensitivity.Set(inCombVel, combSens); + Estimated.Gain.Set(inCombVel, combGain); } + + public void CalculateDotsXY(int x, int y) + { + var magnitudeX = Math.Abs(x); + var magnitudeY = Math.Abs(y); + + (var inXVel, var xSens, var xGain) = X.FindInValuesFromOut(magnitudeX); + EstimatedX.Velocity.Set(inXVel, magnitudeX); + EstimatedX.Sensitivity.Set(inXVel, xSens); + EstimatedX.Gain.Set(inXVel, xGain); + + (var inYVel, var ySens, var yGain) = Y.FindInValuesFromOut(magnitudeY); + EstimatedY.Velocity.Set(inYVel, magnitudeY); + EstimatedY.Sensitivity.Set(inYVel, ySens); + EstimatedY.Gain.Set(inYVel, yGain); + } + } } -- cgit v1.2.3 From 32323636b4b5390c114fc2a6d845b7621a983cdc Mon Sep 17 00:00:00 2001 From: Jacob Palecki Date: Thu, 13 Aug 2020 20:56:41 -0700 Subject: Fix initial points, add poll time constant --- grapher/Models/Calculations/AccelData.cs | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) (limited to 'grapher/Models/Calculations/AccelData.cs') diff --git a/grapher/Models/Calculations/AccelData.cs b/grapher/Models/Calculations/AccelData.cs index 6fb4767..683c67e 100644 --- a/grapher/Models/Calculations/AccelData.cs +++ b/grapher/Models/Calculations/AccelData.cs @@ -44,30 +44,30 @@ namespace grapher.Models.Calculations Y.Clear(); } - public void CalculateDots(int x, int y) + public void CalculateDots(int x, int y, double timeInMs) { - var magnitude = AccelCalculator.Magnitude(x, y); + var magnitude = AccelCalculator.Velocity(x, y, timeInMs); - (var inCombVel, var combSens, var combGain) = Combined.FindInValuesFromOut(magnitude); + (var inCombVel, var combSens, var combGain) = Combined.FindPointValuesFromOut(magnitude); Estimated.Velocity.Set(inCombVel, magnitude); Estimated.Sensitivity.Set(inCombVel, combSens); Estimated.Gain.Set(inCombVel, combGain); } - public void CalculateDotsXY(int x, int y) + public void CalculateDotsXY(int x, int y, double timeInMs) { - var magnitudeX = Math.Abs(x); - var magnitudeY = Math.Abs(y); - - (var inXVel, var xSens, var xGain) = X.FindInValuesFromOut(magnitudeX); - EstimatedX.Velocity.Set(inXVel, magnitudeX); - EstimatedX.Sensitivity.Set(inXVel, xSens); - EstimatedX.Gain.Set(inXVel, xGain); - - (var inYVel, var ySens, var yGain) = Y.FindInValuesFromOut(magnitudeY); - EstimatedY.Velocity.Set(inYVel, magnitudeY); - EstimatedY.Sensitivity.Set(inYVel, ySens); - EstimatedY.Gain.Set(inYVel, yGain); + var outX = Math.Abs(x); + var outY = Math.Abs(y); + + (var inXVelocity, var xSensitivity, var xGain) = X.FindPointValuesFromOut(outX); + EstimatedX.Velocity.Set(inXVelocity, outX); + EstimatedX.Sensitivity.Set(inXVelocity, xSensitivity); + EstimatedX.Gain.Set(inXVelocity, xGain); + + (var inYVelocity, var ySensitivity, var yGain) = Y.FindPointValuesFromOut(outY); + EstimatedY.Velocity.Set(inYVelocity, outY); + EstimatedY.Sensitivity.Set(inYVelocity, ySensitivity); + EstimatedY.Gain.Set(inYVelocity, yGain); } } -- cgit v1.2.3