summaryrefslogtreecommitdiff
path: root/grapher/AccelGUI.cs
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2020-08-02 18:20:29 -0700
committerJacob Palecki <[email protected]>2020-08-02 18:20:29 -0700
commit26b8727a8de23f829dbd95d9ec5a7f2713da7eb7 (patch)
treecb39d2c783e9a7bf7b64dfb7f7573b11b64f1069 /grapher/AccelGUI.cs
parentAdd velocity graph (diff)
downloadrawaccel-26b8727a8de23f829dbd95d9ec5a7f2713da7eb7.tar.xz
rawaccel-26b8727a8de23f829dbd95d9ec5a7f2713da7eb7.zip
Add gain and velocity graphs
Diffstat (limited to 'grapher/AccelGUI.cs')
-rw-r--r--grapher/AccelGUI.cs31
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);
+ }
}