summaryrefslogtreecommitdiff
path: root/grapher/Models/Calculations
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2020-09-21 00:08:19 -0700
committerJacob Palecki <[email protected]>2020-09-21 00:08:19 -0700
commitba642cd8c8e63ec3778fa17ecbcd7964074aaba1 (patch)
treebb7baaf0e076b64538b7d408cec47045c63a3a8a /grapher/Models/Calculations
parentAttempt to get separate x/y working (diff)
downloadrawaccel-ba642cd8c8e63ec3778fa17ecbcd7964074aaba1.tar.xz
rawaccel-ba642cd8c8e63ec3778fa17ecbcd7964074aaba1.zip
separate x/y mostly works
Diffstat (limited to 'grapher/Models/Calculations')
-rw-r--r--grapher/Models/Calculations/AccelCalculator.cs8
-rw-r--r--grapher/Models/Calculations/AccelChartData.cs4
-rw-r--r--grapher/Models/Calculations/AccelData.cs16
3 files changed, 18 insertions, 10 deletions
diff --git a/grapher/Models/Calculations/AccelCalculator.cs b/grapher/Models/Calculations/AccelCalculator.cs
index 35fee2d..a140c90 100644
--- a/grapher/Models/Calculations/AccelCalculator.cs
+++ b/grapher/Models/Calculations/AccelCalculator.cs
@@ -110,9 +110,9 @@ namespace grapher.Models.Calculations
var ratio = magnitudeDatum.magnitude > 0 ? magnitudeWithoutSens / magnitudeDatum.magnitude : 1;
- if (!data.Combined.AccelPoints.ContainsKey(magnitudeDatum.magnitude))
+ if (!data.Combined.VelocityPoints.ContainsKey(magnitudeDatum.magnitude))
{
- data.Combined.AccelPoints.Add(magnitudeDatum.magnitude, ratio);
+ data.Combined.VelocityPoints.Add(magnitudeDatum.magnitude, magnitudeWithoutSens);
}
var xRatio = settings.sensitivity.x * ratio;
@@ -158,8 +158,8 @@ namespace grapher.Models.Calculations
}
lastInputMagnitude = magnitudeDatum.magnitude;
- lastOutputMagnitudeX = xOutDiff;
- lastOutputMagnitudeY = yOutDiff;
+ lastOutputMagnitudeX = xOut;
+ lastOutputMagnitudeY = yOut;
}
data.Combined.OrderedVelocityPointsList.AddRange(data.Combined.VelocityPoints.Values.ToList());
diff --git a/grapher/Models/Calculations/AccelChartData.cs b/grapher/Models/Calculations/AccelChartData.cs
index c943643..907eb0e 100644
--- a/grapher/Models/Calculations/AccelChartData.cs
+++ b/grapher/Models/Calculations/AccelChartData.cs
@@ -63,7 +63,7 @@ namespace grapher.Models.Calculations
public (double, double, double) ValuesAtIndex(int index)
{
- return (VelocityPoints.ElementAt(index).Value, AccelPoints.ElementAt(index).Value, GainPoints.ElementAt(index).Value);
+ return (AccelPoints.ElementAt(index).Value, VelocityPoints.ElementAt(index).Value, GainPoints.ElementAt(index).Value);
}
public int GetVelocityIndex(double outVelocityValue)
@@ -75,6 +75,8 @@ namespace grapher.Models.Calculations
velIdx = ~velIdx;
}
+ velIdx = Math.Min(velIdx, VelocityPoints.Count - 1);
+
return velIdx;
}
diff --git a/grapher/Models/Calculations/AccelData.cs b/grapher/Models/Calculations/AccelData.cs
index 894774b..0fe7a3c 100644
--- a/grapher/Models/Calculations/AccelData.cs
+++ b/grapher/Models/Calculations/AccelData.cs
@@ -1,6 +1,8 @@
using grapher.Models.Charts;
+using grapher.Models.Serialized;
using System;
using System.Collections.Generic;
+using System.Linq;
namespace grapher.Models.Calculations
{
@@ -20,6 +22,8 @@ namespace grapher.Models.Calculations
Estimated = combined;
EstimatedX = x;
EstimatedY = y;
+
+ OutVelocityToPoints = new Dictionary<double, (double, double, double, double, double, double, double)>();
}
#endregion Constructors
@@ -49,6 +53,7 @@ namespace grapher.Models.Calculations
Combined.Clear();
X.Clear();
Y.Clear();
+ OutVelocityToPoints.Clear();
}
public void CalculateDots(int x, int y, double timeInMs)
@@ -77,9 +82,10 @@ namespace grapher.Models.Calculations
EstimatedY.Gain.Set(inYVelocity, yGain);
}
- public void CalculateDotsCombinedDiffSens(int x, int y, double timeInMs)
+ public void CalculateDotsCombinedDiffSens(int x, int y, double timeInMs, DriverSettings settings)
{
- var outVelocity = AccelCalculator.Velocity(x, y, timeInMs);
+ (var xStripped, var yStripped) = AccelCalculator.StripSens(x, y, settings.sensitivity.x, settings.sensitivity.y);
+ var outVelocity = AccelCalculator.Velocity(xStripped, yStripped, timeInMs);
if (OutVelocityToPoints.TryGetValue(outVelocity, out var points))
{
@@ -93,9 +99,9 @@ namespace grapher.Models.Calculations
else
{
var index = Combined.GetVelocityIndex(outVelocity);
- var inVelocity = Combined.VelocityPoints[index];
- var xPoints = X.FindPointValuesFromOut(outVelocity);
- var yPoints = Y.FindPointValuesFromOut(outVelocity);
+ var inVelocity = Combined.VelocityPoints.ElementAt(index).Value;
+ var xPoints = X.ValuesAtIndex(index);
+ var yPoints = Y.ValuesAtIndex(index);
OutVelocityToPoints.Add(outVelocity, (inVelocity, xPoints.Item1, xPoints.Item2, xPoints.Item3, yPoints.Item1, yPoints.Item2, yPoints.Item3));
EstimatedX.Sensitivity.Set(inVelocity, xPoints.Item1);
EstimatedX.Velocity.Set(inVelocity, xPoints.Item2);