diff options
| author | Jacob Palecki <[email protected]> | 2020-08-13 20:56:41 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-08-13 20:56:41 -0700 |
| commit | 32323636b4b5390c114fc2a6d845b7621a983cdc (patch) | |
| tree | 01d7df8f55e5a1cce90617fd876eaf994eb26846 /grapher/Models | |
| parent | All works smoothly (diff) | |
| download | rawaccel-32323636b4b5390c114fc2a6d845b7621a983cdc.tar.xz rawaccel-32323636b4b5390c114fc2a6d845b7621a983cdc.zip | |
Fix initial points, add poll time constant
Diffstat (limited to 'grapher/Models')
| -rw-r--r-- | grapher/Models/AccelGUI.cs | 2 | ||||
| -rw-r--r-- | grapher/Models/Calculations/AccelCalculator.cs | 17 | ||||
| -rw-r--r-- | grapher/Models/Calculations/AccelChartData.cs | 5 | ||||
| -rw-r--r-- | grapher/Models/Calculations/AccelData.cs | 32 | ||||
| -rw-r--r-- | grapher/Models/Charts/AccelCharts.cs | 6 | ||||
| -rw-r--r-- | grapher/Models/Charts/ChartXY.cs | 2 | ||||
| -rw-r--r-- | grapher/Models/Mouse/MouseWatcher.cs | 16 | ||||
| -rw-r--r-- | grapher/Models/Mouse/PointData.cs | 11 |
8 files changed, 48 insertions, 43 deletions
diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index a63bf07..8eb2226 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -91,7 +91,7 @@ namespace grapher public void UpdateGraph() { - AccelCalculator.Calculate(AccelCharts.AccelData, ManagedAcceleration, Sensitivity.Fields.X, Sensitivity.Fields.Y); + AccelCalculator.Calculate(AccelCharts.AccelData, ManagedAcceleration); AccelCharts.Bind(); } diff --git a/grapher/Models/Calculations/AccelCalculator.cs b/grapher/Models/Calculations/AccelCalculator.cs index e194854..bba3c32 100644 --- a/grapher/Models/Calculations/AccelCalculator.cs +++ b/grapher/Models/Calculations/AccelCalculator.cs @@ -23,13 +23,13 @@ namespace grapher.Models.Calculations public static ReadOnlyCollection<MagnitudeData> MagnitudesX = GetMagnitudesX(); public static ReadOnlyCollection<MagnitudeData> MagnitudesY = GetMagnitudesY(); - public static void Calculate(AccelData data, ManagedAccel accel, double starterX, double starterY) + public static void Calculate(AccelData data, ManagedAccel accel) { data.Clear(); - Calculate(data.Combined, accel, starterX, MagnitudesCombined); - Calculate(data.X, accel, starterY, MagnitudesX); - Calculate(data.Y, accel, starterY, MagnitudesY); + Calculate(data.Combined, accel, accel.GetSensitivityX(), MagnitudesCombined); + Calculate(data.X, accel, accel.GetSensitivityX(), MagnitudesX); + Calculate(data.Y, accel, accel.GetSensitivityY(), MagnitudesY); } public static void Calculate(AccelChartData data, ManagedAccel accel, double starter, ICollection<MagnitudeData> magnitudeData) @@ -132,5 +132,14 @@ namespace grapher.Models.Calculations return Math.Sqrt(x * x + y * y); } + public static double Velocity(int x, int y, double time) + { + return Magnitude(x, y) / time; + } + + public static double Velocity(double x, double y, double time) + { + return Magnitude(x, y) / time; + } } } diff --git a/grapher/Models/Calculations/AccelChartData.cs b/grapher/Models/Calculations/AccelChartData.cs index fa31f35..20142a7 100644 --- a/grapher/Models/Calculations/AccelChartData.cs +++ b/grapher/Models/Calculations/AccelChartData.cs @@ -36,7 +36,7 @@ namespace grapher.Models.Calculations OutVelocityToPoints.Clear(); } - public (double, double, double) FindInValuesFromOut(double outVelocityValue) + public (double, double, double) FindPointValuesFromOut(double outVelocityValue) { if (OutVelocityToPoints.TryGetValue(outVelocityValue, out var values)) { @@ -52,11 +52,8 @@ namespace grapher.Models.Calculations } velIdx = Math.Min(velIdx, VelocityPoints.Count - 1); - values = (VelocityPoints.ElementAt(velIdx).Key, AccelPoints.ElementAt(velIdx).Value, GainPoints.ElementAt(velIdx).Value); - OutVelocityToPoints.Add(outVelocityValue, values); - return values; } } 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); } } diff --git a/grapher/Models/Charts/AccelCharts.cs b/grapher/Models/Charts/AccelCharts.cs index 42377c4..1aa3909 100644 --- a/grapher/Models/Charts/AccelCharts.cs +++ b/grapher/Models/Charts/AccelCharts.cs @@ -84,15 +84,15 @@ namespace grapher private int FormBorderHeight { get; } - public void MakeDots(int x, int y) + public void MakeDots(int x, int y, double timeInMs) { if (Combined) { - AccelData.CalculateDots(x, y); + AccelData.CalculateDots(x, y, timeInMs); } else { - AccelData.CalculateDotsXY(x, y); + AccelData.CalculateDotsXY(x, y, timeInMs); } } diff --git a/grapher/Models/Charts/ChartXY.cs b/grapher/Models/Charts/ChartXY.cs index c0c8713..81874a2 100644 --- a/grapher/Models/Charts/ChartXY.cs +++ b/grapher/Models/Charts/ChartXY.cs @@ -121,7 +121,7 @@ namespace grapher { if (chart.Visible) { - (var x, var y) = point.Get(); + point.Get(out var x, out var y); chart.Series[1].Points.DataBindXY(x, y); chart.Update(); } diff --git a/grapher/Models/Mouse/MouseWatcher.cs b/grapher/Models/Mouse/MouseWatcher.cs index 9b1479e..fea4e2d 100644 --- a/grapher/Models/Mouse/MouseWatcher.cs +++ b/grapher/Models/Mouse/MouseWatcher.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Runtime.InteropServices; using System.Text; @@ -691,18 +692,21 @@ namespace grapher.Models.Mouse RAWINPUTDEVICE[] devices = new RAWINPUTDEVICE[1]; devices[0] = device; RegisterRawInputDevices(devices, 1, Marshal.SizeOf(typeof(RAWINPUTDEVICE))); + PollTime = 1; } - Form ContainingForm { get; } + private Form ContainingForm { get; } - Label Display { get; } + private Label Display { get; } - AccelCharts AccelCharts { get; } + private AccelCharts AccelCharts { get; } - public void OnMouseMove(int x, int y) + private double PollTime { get; } + + public void OnMouseMove(int x, int y, double timeInMs) { Display.Text = $"Last (x, y): ({x}, {y})"; - AccelCharts.MakeDots(x, y); + AccelCharts.MakeDots(x, y, timeInMs); } public void ReadMouseMove(Message message) @@ -715,7 +719,7 @@ namespace grapher.Models.Mouse if (rawInput.Data.Mouse.LastX != 0 || rawInput.Data.Mouse.LastY != 0) { - OnMouseMove(rawInput.Data.Mouse.LastX, rawInput.Data.Mouse.LastY); + OnMouseMove(rawInput.Data.Mouse.LastX, rawInput.Data.Mouse.LastY, PollTime); } } diff --git a/grapher/Models/Mouse/PointData.cs b/grapher/Models/Mouse/PointData.cs index d0273d5..12a6e73 100644 --- a/grapher/Models/Mouse/PointData.cs +++ b/grapher/Models/Mouse/PointData.cs @@ -29,18 +29,13 @@ namespace grapher.Models.Mouse } } - public (double[], double[]) Get() + public void Get(out double[] x, out double[] y) { - double[] xRet; - double[] yRet; - lock(Lock) { - xRet = X; - yRet = Y; + x = X; + y = Y; } - - return (xRet, yRet); } } } |