diff options
| author | Jacob Palecki <[email protected]> | 2020-09-20 23:16:15 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-09-20 23:16:15 -0700 |
| commit | 2a756dfb08b4f8c0870173ad4e0393cdeef33c94 (patch) | |
| tree | 575d676af12a67db93b7ff7557ac029f27a58b8c /grapher/Models/Calculations/AccelCalculator.cs | |
| parent | Merge branch 'GUI' into Unsure (diff) | |
| download | rawaccel-2a756dfb08b4f8c0870173ad4e0393cdeef33c94.tar.xz rawaccel-2a756dfb08b4f8c0870173ad4e0393cdeef33c94.zip | |
Attempt to get separate x/y working
Diffstat (limited to 'grapher/Models/Calculations/AccelCalculator.cs')
| -rw-r--r-- | grapher/Models/Calculations/AccelCalculator.cs | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/grapher/Models/Calculations/AccelCalculator.cs b/grapher/Models/Calculations/AccelCalculator.cs index ff1088b..35fee2d 100644 --- a/grapher/Models/Calculations/AccelCalculator.cs +++ b/grapher/Models/Calculations/AccelCalculator.cs @@ -96,9 +96,8 @@ namespace grapher.Models.Calculations public void CalculateCombinedDiffSens(AccelData data, ManagedAccel accel, DriverSettings settings, ICollection<MagnitudeData> magnitudeData) { - double lastInputMagnitudeX = 0; + double lastInputMagnitude = 0; double lastOutputMagnitudeX = 0; - double lastInputMagnitudeY = 0; double lastOutputMagnitudeY = 0; Sensitivity = GetSens(ref settings); @@ -116,13 +115,54 @@ namespace grapher.Models.Calculations data.Combined.AccelPoints.Add(magnitudeDatum.magnitude, ratio); } - var xRatio = magnitudeDatum.x > 0 ? output.Item1 / magnitudeDatum.x : settings.sensitivity.x * ratio; + var xRatio = settings.sensitivity.x * ratio; + var yRatio = settings.sensitivity.y * ratio; if (!data.X.AccelPoints.ContainsKey(magnitudeDatum.magnitude)) { + data.X.AccelPoints.Add(magnitudeDatum.magnitude, xRatio); + } + if (!data.Y.AccelPoints.ContainsKey(magnitudeDatum.magnitude)) + { + data.Y.AccelPoints.Add(magnitudeDatum.magnitude, yRatio); } + + var xOut = xRatio * magnitudeDatum.magnitude; + var yOut = yRatio * magnitudeDatum.magnitude; + + var inDiff = magnitudeDatum.magnitude - lastInputMagnitude; + var xOutDiff = xOut - lastOutputMagnitudeX; + var yOutDiff = yOut - lastOutputMagnitudeY; + var xSlope = inDiff > 0 ? xOutDiff / inDiff : settings.sensitivity.x; + var ySlope = inDiff > 0 ? yOutDiff / inDiff : settings.sensitivity.y; + + if (!data.X.VelocityPoints.ContainsKey(magnitudeDatum.magnitude)) + { + data.X.VelocityPoints.Add(magnitudeDatum.magnitude, xOut); + } + + if (!data.Y.VelocityPoints.ContainsKey(magnitudeDatum.magnitude)) + { + data.Y.VelocityPoints.Add(magnitudeDatum.magnitude, yOut); + } + + if (!data.X.GainPoints.ContainsKey(magnitudeDatum.magnitude)) + { + data.X.GainPoints.Add(magnitudeDatum.magnitude, xSlope); + } + + if (!data.Y.GainPoints.ContainsKey(magnitudeDatum.magnitude)) + { + data.Y.GainPoints.Add(magnitudeDatum.magnitude, ySlope); + } + + lastInputMagnitude = magnitudeDatum.magnitude; + lastOutputMagnitudeX = xOutDiff; + lastOutputMagnitudeY = yOutDiff; } + + data.Combined.OrderedVelocityPointsList.AddRange(data.Combined.VelocityPoints.Values.ToList()); } public ReadOnlyCollection<MagnitudeData> GetMagnitudes() |