diff options
| author | Jacob Palecki <[email protected]> | 2020-08-12 19:22:21 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-08-12 19:22:21 -0700 |
| commit | cc531c79f2bd664551071ef315a54814bd9ab914 (patch) | |
| tree | e6d1db3477e8ba41299d1d92eac4748a648c960b /grapher/AccelGUI.cs | |
| parent | Add ability to have x\y graphs (diff) | |
| download | rawaccel-cc531c79f2bd664551071ef315a54814bd9ab914.tar.xz rawaccel-cc531c79f2bd664551071ef315a54814bd9ab914.zip | |
Reorganized solution into directories
Diffstat (limited to 'grapher/AccelGUI.cs')
| -rw-r--r-- | grapher/AccelGUI.cs | 180 |
1 files changed, 0 insertions, 180 deletions
diff --git a/grapher/AccelGUI.cs b/grapher/AccelGUI.cs deleted file mode 100644 index 54564b3..0000000 --- a/grapher/AccelGUI.cs +++ /dev/null @@ -1,180 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; -using System.Windows.Forms.DataVisualization.Charting; - -namespace grapher -{ - public class AccelGUI - { - public struct MagnitudeData - { - public double magnitude; - public int x; - public int y; - } - - public static ReadOnlyCollection<MagnitudeData> Magnitudes = GetMagnitudes(); - - #region constructors - - public AccelGUI( - RawAcceleration accelForm, - AccelCharts accelCharts, - ManagedAccel managedAccel, - AccelOptions accelOptions, - OptionXY sensitivity, - Option rotation, - OptionXY weight, - CapOptions cap, - Option offset, - Option acceleration, - Option limtOrExp, - Option midpoint, - Button writeButton) - { - AccelForm = accelForm; - AccelCharts = accelCharts; - ManagedAcceleration = managedAccel; - AccelerationOptions = accelOptions; - Sensitivity = sensitivity; - Rotation = rotation; - Weight = weight; - Cap = cap; - Offset = offset; - Acceleration = acceleration; - LimitOrExponent = limtOrExp; - Midpoint = midpoint; - WriteButton = writeButton; - - OrderedAccelPoints = new SortedDictionary<double, double>(); - OrderedVelocityPoints = new SortedDictionary<double, double>(); - OrderedGainPoints = new SortedDictionary<double, double>(); - - - ManagedAcceleration.ReadFromDriver(); - UpdateGraph(); - } - - #endregion constructors - - #region properties - - public RawAcceleration AccelForm { get; } - - public AccelCharts AccelCharts { get; } - - public ManagedAccel ManagedAcceleration { get; } - - public AccelOptions AccelerationOptions { get; } - - public OptionXY Sensitivity { get; } - - public Option Rotation { get; } - - public OptionXY Weight { get; } - - public CapOptions Cap { get; } - - public Option Offset { get; } - - public Option Acceleration { get; } - - public Option LimitOrExponent { get; } - - public Option Midpoint { get; } - - public Button WriteButton { get; } - - public SortedDictionary<double, double> OrderedAccelPoints { get; } - - public SortedDictionary<double, double> OrderedVelocityPoints { get; } - - public SortedDictionary<double, double> OrderedGainPoints { get; } - - #endregion properties - - #region methods - - public static ReadOnlyCollection<MagnitudeData> GetMagnitudes() - { - var magnitudes = new List<MagnitudeData>(); - for (int i = 0; i < 100; i++) - { - for (int j = 0; j <= i; j++) - { - MagnitudeData magnitudeData; - magnitudeData.magnitude = Magnitude(i, j); - magnitudeData.x = i; - magnitudeData.y = j; - magnitudes.Add(magnitudeData); - } - } - - magnitudes.Sort((m1, m2) => m1.magnitude.CompareTo(m2.magnitude)); - - return magnitudes.AsReadOnly(); - } - - public static double Magnitude(int x, int y) - { - return Math.Sqrt(x * x + y * y); - } - - public static double Magnitude(double x, double y) - { - return Math.Sqrt(x * x + y * y); - } - - public void UpdateGraph() - { - OrderedAccelPoints.Clear(); - OrderedVelocityPoints.Clear(); - OrderedGainPoints.Clear(); - - double lastInputMagnitude = 0; - double lastOutputMagnitude = 0; - - foreach (var magnitudeData in Magnitudes) - { - var output = ManagedAcceleration.Accelerate(magnitudeData.x, magnitudeData.y, 1); - - 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; - - if (!OrderedAccelPoints.ContainsKey(magnitudeData.magnitude)) - { - OrderedAccelPoints.Add(magnitudeData.magnitude, ratio); - } - - if (!OrderedVelocityPoints.ContainsKey(magnitudeData.magnitude)) - { - OrderedVelocityPoints.Add(magnitudeData.magnitude, outMagnitude); - } - - if (!OrderedGainPoints.ContainsKey(magnitudeData.magnitude)) - { - OrderedGainPoints.Add(magnitudeData.magnitude, slope); - } - - lastInputMagnitude = magnitudeData.magnitude; - lastOutputMagnitude = outMagnitude; - } - - AccelCharts.SensitivityChart.ChartX.Series[0].Points.DataBindXY(OrderedAccelPoints.Keys, OrderedAccelPoints.Values); - AccelCharts.VelocityChart.ChartX.Series[0].Points.DataBindXY(OrderedVelocityPoints.Keys, OrderedVelocityPoints.Values); - AccelCharts.GainChart.ChartX.Series[0].Points.DataBindXY(OrderedGainPoints.Keys, OrderedGainPoints.Values); - } - - #endregion methods - } - -} |