diff options
| author | Jacob Palecki <[email protected]> | 2020-08-02 18:20:29 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-08-02 18:20:29 -0700 |
| commit | 26b8727a8de23f829dbd95d9ec5a7f2713da7eb7 (patch) | |
| tree | cb39d2c783e9a7bf7b64dfb7f7573b11b64f1069 /grapher/AccelGUI.cs | |
| parent | Add velocity graph (diff) | |
| download | rawaccel-26b8727a8de23f829dbd95d9ec5a7f2713da7eb7.tar.xz rawaccel-26b8727a8de23f829dbd95d9ec5a7f2713da7eb7.zip | |
Add gain and velocity graphs
Diffstat (limited to 'grapher/AccelGUI.cs')
| -rw-r--r-- | grapher/AccelGUI.cs | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/grapher/AccelGUI.cs b/grapher/AccelGUI.cs index 9acb38e..48fad7e 100644 --- a/grapher/AccelGUI.cs +++ b/grapher/AccelGUI.cs @@ -26,6 +26,7 @@ namespace grapher RawAcceleration accelForm, Chart accelerationChart, Chart velocityChart, + Chart gainChart, ManagedAccel managedAccel, AccelOptions accelOptions, OptionXY sensitivity, @@ -40,6 +41,7 @@ namespace grapher AccelForm = accelForm; AccelChart = accelerationChart; VelocityChart = velocityChart; + GainChart = gainChart; ManagedAcceleration = managedAccel; AccelerationOptions = accelOptions; Sensitivity = sensitivity; @@ -64,6 +66,8 @@ namespace grapher public Chart VelocityChart { get; } + public Chart GainChart { get; } + public ManagedAccel ManagedAcceleration { get; } public AccelOptions AccelerationOptions { get; } @@ -122,8 +126,12 @@ namespace grapher public void UpdateGraph() { - var orderedAccelPoints = new SortedDictionary<double, double>(); - var orderedVelocityPoints = new SortedDictionary<double, double>(); + var orderedAccelPoints = new SortedDictionary<double, double>(); + var orderedVelocityPoints = new SortedDictionary<double, double>(); + var orderedGainPoints = new SortedDictionary<double, double>(); + + double lastInputMagnitude = 0; + double lastOutputMagnitude = 0; foreach (var magnitudeData in Magnitudes) { @@ -132,6 +140,12 @@ namespace grapher var outMagnitude = Magnitude(output.Item1, output.Item2); var ratio = magnitudeData.magnitude > 0 ? outMagnitude / magnitudeData.magnitude : Sensitivity.Fields.X; + var inDiff = magnitudeData.magnitude - lastInputMagnitude; + var outDiff = outMagnitude - lastOutputMagnitude; + var slope = inDiff > 0 ? outDiff / inDiff : Sensitivity.Fields.X; + lastInputMagnitude = magnitudeData.magnitude; + lastOutputMagnitude = outMagnitude; + if (!orderedAccelPoints.ContainsKey(magnitudeData.magnitude)) { orderedAccelPoints.Add(magnitudeData.magnitude, ratio); @@ -141,6 +155,11 @@ namespace grapher { orderedVelocityPoints.Add(magnitudeData.magnitude, outMagnitude); } + + if (!orderedGainPoints.ContainsKey(magnitudeData.magnitude)) + { + orderedGainPoints.Add(magnitudeData.magnitude, slope); + } } var accelSeries = AccelChart.Series.FirstOrDefault(); @@ -158,6 +177,14 @@ namespace grapher { velSeries.Points.AddXY(point.Key, point.Value); } + + var gainSeries = GainChart.Series.FirstOrDefault(); + gainSeries.Points.Clear(); + + foreach (var point in orderedGainPoints) + { + gainSeries.Points.AddXY(point.Key, point.Value); + } } |