diff options
| author | Jacob Palecki <[email protected]> | 2020-09-21 00:08:19 -0700 |
|---|---|---|
| committer | Jacob Palecki <[email protected]> | 2020-09-21 00:08:19 -0700 |
| commit | ba642cd8c8e63ec3778fa17ecbcd7964074aaba1 (patch) | |
| tree | bb7baaf0e076b64538b7d408cec47045c63a3a8a /grapher | |
| parent | Attempt to get separate x/y working (diff) | |
| download | rawaccel-ba642cd8c8e63ec3778fa17ecbcd7964074aaba1.tar.xz rawaccel-ba642cd8c8e63ec3778fa17ecbcd7964074aaba1.zip | |
separate x/y mostly works
Diffstat (limited to 'grapher')
| -rw-r--r-- | grapher/Form1.Designer.cs | 191 | ||||
| -rw-r--r-- | grapher/Models/AccelGUI.cs | 2 | ||||
| -rw-r--r-- | grapher/Models/Calculations/AccelCalculator.cs | 8 | ||||
| -rw-r--r-- | grapher/Models/Calculations/AccelChartData.cs | 4 | ||||
| -rw-r--r-- | grapher/Models/Calculations/AccelData.cs | 16 | ||||
| -rw-r--r-- | grapher/Models/Charts/AccelCharts.cs | 1 | ||||
| -rw-r--r-- | grapher/Models/Charts/ChartState/ChartState.cs | 10 | ||||
| -rw-r--r-- | grapher/Models/Charts/ChartState/XYOneGraphState.cs | 18 | ||||
| -rw-r--r-- | grapher/Models/Charts/ChartXY.cs | 26 |
9 files changed, 165 insertions, 111 deletions
diff --git a/grapher/Form1.Designer.cs b/grapher/Form1.Designer.cs index d8133e5..535ee15 100644 --- a/grapher/Form1.Designer.cs +++ b/grapher/Form1.Designer.cs @@ -35,36 +35,39 @@ namespace grapher System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series4 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Title title1 = new System.Windows.Forms.DataVisualization.Charting.Title(); System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend(); - System.Windows.Forms.DataVisualization.Charting.Series series4 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series5 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series6 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series7 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series8 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Title title2 = new System.Windows.Forms.DataVisualization.Charting.Title(); System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); System.Windows.Forms.DataVisualization.Charting.Legend legend3 = new System.Windows.Forms.DataVisualization.Charting.Legend(); - System.Windows.Forms.DataVisualization.Charting.Series series7 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Series series8 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series9 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Title title3 = new System.Windows.Forms.DataVisualization.Charting.Title(); - System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea4 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); - System.Windows.Forms.DataVisualization.Charting.Legend legend4 = new System.Windows.Forms.DataVisualization.Charting.Legend(); System.Windows.Forms.DataVisualization.Charting.Series series10 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series11 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series12 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Title title4 = new System.Windows.Forms.DataVisualization.Charting.Title(); - System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea5 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); - System.Windows.Forms.DataVisualization.Charting.Legend legend5 = new System.Windows.Forms.DataVisualization.Charting.Legend(); + System.Windows.Forms.DataVisualization.Charting.Title title3 = new System.Windows.Forms.DataVisualization.Charting.Title(); + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea4 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.Legend legend4 = new System.Windows.Forms.DataVisualization.Charting.Legend(); System.Windows.Forms.DataVisualization.Charting.Series series13 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series14 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series15 = new System.Windows.Forms.DataVisualization.Charting.Series(); - System.Windows.Forms.DataVisualization.Charting.Title title5 = new System.Windows.Forms.DataVisualization.Charting.Title(); - System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea6 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); - System.Windows.Forms.DataVisualization.Charting.Legend legend6 = new System.Windows.Forms.DataVisualization.Charting.Legend(); + System.Windows.Forms.DataVisualization.Charting.Title title4 = new System.Windows.Forms.DataVisualization.Charting.Title(); + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea5 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.Legend legend5 = new System.Windows.Forms.DataVisualization.Charting.Legend(); System.Windows.Forms.DataVisualization.Charting.Series series16 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series17 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Series series18 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Title title5 = new System.Windows.Forms.DataVisualization.Charting.Title(); + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea6 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.Legend legend6 = new System.Windows.Forms.DataVisualization.Charting.Legend(); + System.Windows.Forms.DataVisualization.Charting.Series series19 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series20 = new System.Windows.Forms.DataVisualization.Charting.Series(); + System.Windows.Forms.DataVisualization.Charting.Series series21 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.Title title6 = new System.Windows.Forms.DataVisualization.Charting.Title(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RawAcceleration)); this.AccelerationChart = new System.Windows.Forms.DataVisualization.Charting.Chart(); @@ -184,9 +187,15 @@ namespace grapher series3.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; series3.Legend = "Legend1"; series3.Name = "Y: Accelerated Sensitivity"; + series4.ChartArea = "ChartArea1"; + series4.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series4.IsVisibleInLegend = false; + series4.Legend = "Legend1"; + series4.Name = "Y - Last Mouse Move"; this.AccelerationChart.Series.Add(series1); this.AccelerationChart.Series.Add(series2); this.AccelerationChart.Series.Add(series3); + this.AccelerationChart.Series.Add(series4); this.AccelerationChart.Size = new System.Drawing.Size(698, 328); this.AccelerationChart.TabIndex = 0; this.AccelerationChart.Text = "Sensitivity"; @@ -399,22 +408,28 @@ namespace grapher this.VelocityChart.Legends.Add(legend2); this.VelocityChart.Location = new System.Drawing.Point(482, 334); this.VelocityChart.Name = "VelocityChart"; - series4.ChartArea = "ChartArea1"; - series4.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; - series4.Legend = "Legend1"; - series4.Name = "Output Velocity"; series5.ChartArea = "ChartArea1"; - series5.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series5.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + series5.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; series5.Legend = "Legend1"; - series5.Name = "Last Mouse Move"; + series5.Name = "Output Velocity"; series6.ChartArea = "ChartArea1"; - series6.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series6.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series6.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); series6.Legend = "Legend1"; - series6.Name = "Y: Output Velocity"; - this.VelocityChart.Series.Add(series4); + series6.Name = "Last Mouse Move"; + series7.ChartArea = "ChartArea1"; + series7.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series7.Legend = "Legend1"; + series7.Name = "Y: Output Velocity"; + series8.ChartArea = "ChartArea1"; + series8.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series8.IsVisibleInLegend = false; + series8.Legend = "Legend1"; + series8.Name = "Y: Last Mouse Move"; this.VelocityChart.Series.Add(series5); this.VelocityChart.Series.Add(series6); + this.VelocityChart.Series.Add(series7); + this.VelocityChart.Series.Add(series8); this.VelocityChart.Size = new System.Drawing.Size(698, 307); this.VelocityChart.TabIndex = 28; this.VelocityChart.Text = "chart1"; @@ -434,22 +449,28 @@ namespace grapher this.GainChart.Legends.Add(legend3); this.GainChart.Location = new System.Drawing.Point(482, 647); this.GainChart.Name = "GainChart"; - series7.ChartArea = "ChartArea1"; - series7.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; - series7.Legend = "Legend1"; - series7.Name = "Velocity Gain"; - series8.ChartArea = "ChartArea1"; - series8.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series8.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - series8.Legend = "Legend1"; - series8.Name = "Last Mouse Move"; series9.ChartArea = "ChartArea1"; series9.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; series9.Legend = "Legend1"; - series9.Name = "Y: Velocity Gain"; - this.GainChart.Series.Add(series7); - this.GainChart.Series.Add(series8); + series9.Name = "Velocity Gain"; + series10.ChartArea = "ChartArea1"; + series10.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series10.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + series10.Legend = "Legend1"; + series10.Name = "Last Mouse Move"; + series11.ChartArea = "ChartArea1"; + series11.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series11.Legend = "Legend1"; + series11.Name = "Y: Velocity Gain"; + series12.ChartArea = "ChartArea1"; + series12.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series12.IsVisibleInLegend = false; + series12.Legend = "Legend1"; + series12.Name = "Y: Last Mouse Move"; this.GainChart.Series.Add(series9); + this.GainChart.Series.Add(series10); + this.GainChart.Series.Add(series11); + this.GainChart.Series.Add(series12); this.GainChart.Size = new System.Drawing.Size(698, 309); this.GainChart.TabIndex = 29; this.GainChart.Text = "chart1"; @@ -648,23 +669,23 @@ namespace grapher this.AccelerationChartY.Legends.Add(legend4); this.AccelerationChartY.Location = new System.Drawing.Point(1186, 0); this.AccelerationChartY.Name = "AccelerationChartY"; - series10.ChartArea = "ChartArea1"; - series10.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; - series10.Legend = "Legend1"; - series10.Name = "Accelerated Sensitivity"; - series11.ChartArea = "ChartArea1"; - series11.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series11.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - series11.Legend = "Legend1"; - series11.Name = "Last Mouse Move"; - series12.ChartArea = "ChartArea1"; - series12.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; - series12.IsVisibleInLegend = false; - series12.Legend = "Legend1"; - series12.Name = "Placeholder"; - this.AccelerationChartY.Series.Add(series10); - this.AccelerationChartY.Series.Add(series11); - this.AccelerationChartY.Series.Add(series12); + series13.ChartArea = "ChartArea1"; + series13.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series13.Legend = "Legend1"; + series13.Name = "Accelerated Sensitivity"; + series14.ChartArea = "ChartArea1"; + series14.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series14.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + series14.Legend = "Legend1"; + series14.Name = "Last Mouse Move"; + series15.ChartArea = "ChartArea1"; + series15.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series15.IsVisibleInLegend = false; + series15.Legend = "Legend1"; + series15.Name = "Placeholder"; + this.AccelerationChartY.Series.Add(series13); + this.AccelerationChartY.Series.Add(series14); + this.AccelerationChartY.Series.Add(series15); this.AccelerationChartY.Size = new System.Drawing.Size(698, 328); this.AccelerationChartY.TabIndex = 31; this.AccelerationChartY.Text = "chart1"; @@ -684,23 +705,23 @@ namespace grapher this.VelocityChartY.Legends.Add(legend5); this.VelocityChartY.Location = new System.Drawing.Point(1186, 334); this.VelocityChartY.Name = "VelocityChartY"; - series13.ChartArea = "ChartArea1"; - series13.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; - series13.Legend = "Legend1"; - series13.Name = "Output Velocity"; - series14.ChartArea = "ChartArea1"; - series14.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series14.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - series14.Legend = "Legend1"; - series14.Name = "Last Mouse Move"; - series15.ChartArea = "ChartArea1"; - series15.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; - series15.IsVisibleInLegend = false; - series15.Legend = "Legend1"; - series15.Name = "Placeholder"; - this.VelocityChartY.Series.Add(series13); - this.VelocityChartY.Series.Add(series14); - this.VelocityChartY.Series.Add(series15); + series16.ChartArea = "ChartArea1"; + series16.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series16.Legend = "Legend1"; + series16.Name = "Output Velocity"; + series17.ChartArea = "ChartArea1"; + series17.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series17.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + series17.Legend = "Legend1"; + series17.Name = "Last Mouse Move"; + series18.ChartArea = "ChartArea1"; + series18.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series18.IsVisibleInLegend = false; + series18.Legend = "Legend1"; + series18.Name = "Placeholder"; + this.VelocityChartY.Series.Add(series16); + this.VelocityChartY.Series.Add(series17); + this.VelocityChartY.Series.Add(series18); this.VelocityChartY.Size = new System.Drawing.Size(698, 307); this.VelocityChartY.TabIndex = 32; this.VelocityChartY.Text = "chart1"; @@ -720,23 +741,23 @@ namespace grapher this.GainChartY.Legends.Add(legend6); this.GainChartY.Location = new System.Drawing.Point(1186, 647); this.GainChartY.Name = "GainChartY"; - series16.ChartArea = "ChartArea1"; - series16.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; - series16.Legend = "Legend1"; - series16.Name = "Velocity Gain"; - series17.ChartArea = "ChartArea1"; - series17.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; - series17.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); - series17.Legend = "Legend1"; - series17.Name = "Last Mouse Move"; - series18.ChartArea = "ChartArea1"; - series18.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; - series18.IsVisibleInLegend = false; - series18.Legend = "Legend1"; - series18.Name = "Placeholder"; - this.GainChartY.Series.Add(series16); - this.GainChartY.Series.Add(series17); - this.GainChartY.Series.Add(series18); + series19.ChartArea = "ChartArea1"; + series19.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series19.Legend = "Legend1"; + series19.Name = "Velocity Gain"; + series20.ChartArea = "ChartArea1"; + series20.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Point; + series20.Color = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0))))); + series20.Legend = "Legend1"; + series20.Name = "Last Mouse Move"; + series21.ChartArea = "ChartArea1"; + series21.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; + series21.IsVisibleInLegend = false; + series21.Legend = "Legend1"; + series21.Name = "Placeholder"; + this.GainChartY.Series.Add(series19); + this.GainChartY.Series.Add(series20); + this.GainChartY.Series.Add(series21); this.GainChartY.Size = new System.Drawing.Size(698, 309); this.GainChartY.TabIndex = 33; this.GainChartY.Text = "chart1"; diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs index 5567be3..95d0c25 100644 --- a/grapher/Models/AccelGUI.cs +++ b/grapher/Models/AccelGUI.cs @@ -96,8 +96,8 @@ namespace grapher public void RefreshOnRead() { - UpdateGraph(); UpdateShownActiveValues(); + UpdateGraph(); } public void UpdateGraph() 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); diff --git a/grapher/Models/Charts/AccelCharts.cs b/grapher/Models/Charts/AccelCharts.cs index 657ae89..d22ab78 100644 --- a/grapher/Models/Charts/AccelCharts.cs +++ b/grapher/Models/Charts/AccelCharts.cs @@ -98,6 +98,7 @@ namespace grapher private ChartStateManager ChartStateManager { get; } + #endregion Properties #region Methods diff --git a/grapher/Models/Charts/ChartState/ChartState.cs b/grapher/Models/Charts/ChartState/ChartState.cs index a219cc4..ea67e83 100644 --- a/grapher/Models/Charts/ChartState/ChartState.cs +++ b/grapher/Models/Charts/ChartState/ChartState.cs @@ -23,6 +23,7 @@ namespace grapher.Models.Charts.ChartState GainChart = gainChart; Data = accelData; Calculator = calculator; + TwoDotsPerGraph = false; } public ChartXY SensitivityChart { get; } @@ -37,6 +38,8 @@ namespace grapher.Models.Charts.ChartState public virtual DriverSettings Settings { get; set; } + internal bool TwoDotsPerGraph { get; set; } + public abstract void MakeDots(int x, int y, double timeInMs); public abstract void Bind(); @@ -44,6 +47,7 @@ namespace grapher.Models.Charts.ChartState public abstract void Activate(); public abstract void Calculate(ManagedAccel accel, DriverSettings settings); + public virtual void SetUpCalculate(DriverSettings settings) { Data.Clear(); @@ -52,9 +56,9 @@ namespace grapher.Models.Charts.ChartState public void DrawLastMovement() { - SensitivityChart.DrawLastMovementValue(); - VelocityChart.DrawLastMovementValue(); - GainChart.DrawLastMovementValue(); + SensitivityChart.DrawLastMovementValue(TwoDotsPerGraph); + VelocityChart.DrawLastMovementValue(TwoDotsPerGraph); + GainChart.DrawLastMovementValue(TwoDotsPerGraph); } public void SetWidened() diff --git a/grapher/Models/Charts/ChartState/XYOneGraphState.cs b/grapher/Models/Charts/ChartState/XYOneGraphState.cs index c1153c1..bbc0c28 100644 --- a/grapher/Models/Charts/ChartState/XYOneGraphState.cs +++ b/grapher/Models/Charts/ChartState/XYOneGraphState.cs @@ -17,25 +17,27 @@ namespace grapher.Models.Charts.ChartState gainChart, accelData, accelCalculator) - { } + { + TwoDotsPerGraph = true; + } public override void Activate() { - SensitivityChart.SetSeparate(); - VelocityChart.SetSeparate(); - GainChart.SetSeparate(); + SensitivityChart.SetCombined(); + VelocityChart.SetCombined(); + GainChart.SetCombined(); } public override void MakeDots(int x, int y, double timeInMs) { - Data.CalculateDotsCombinedDiffSens(x, y, timeInMs); + Data.CalculateDotsCombinedDiffSens(x, y, timeInMs, Settings); } public override void Bind() { - SensitivityChart.BindXY(Data.X.AccelPoints, Data.Y.AccelPoints); - VelocityChart.BindXY(Data.X.VelocityPoints, Data.Y.VelocityPoints); - GainChart.BindXY(Data.X.GainPoints, Data.Y.GainPoints); + SensitivityChart.BindXYCombined(Data.X.AccelPoints, Data.Y.AccelPoints); + VelocityChart.BindXYCombined(Data.X.VelocityPoints, Data.Y.VelocityPoints); + GainChart.BindXYCombined(Data.X.GainPoints, Data.Y.GainPoints); } public override void Calculate(ManagedAccel accel, DriverSettings settings) diff --git a/grapher/Models/Charts/ChartXY.cs b/grapher/Models/Charts/ChartXY.cs index 1360409..fdd0258 100644 --- a/grapher/Models/Charts/ChartXY.cs +++ b/grapher/Models/Charts/ChartXY.cs @@ -117,12 +117,17 @@ namespace grapher chart.Titles[0].Font = new System.Drawing.Font(chart.Titles[0].Font.Name, 9.0f, System.Drawing.FontStyle.Italic); } - public static void DrawPoint(Chart chart, PointData point) + public static void DrawPoint(Chart chart, PointData pointOne, PointData pointTwo = null) { if (chart.Visible) { - point.Get(out var x, out var y); + pointOne.Get(out var x, out var y); chart.Series[1].Points.DataBindXY(x, y); + if (pointTwo != null) + { + pointTwo.Get(out x, out y); + chart.Series[3].Points.DataBindXY(x, y); + } chart.Update(); } } @@ -134,11 +139,18 @@ namespace grapher YPointData = y; } - public void DrawLastMovementValue() + public void DrawLastMovementValue(bool twoDotsPerGraph = false) { if(Combined) { - DrawPoint(ChartX, CombinedPointData); + if (twoDotsPerGraph) + { + DrawPoint(ChartX, XPointData, YPointData); + } + else + { + DrawPoint(ChartX, CombinedPointData); + } } else { @@ -164,6 +176,12 @@ namespace grapher ChartY.Series[0].Points.DataBindXY(dataY.Keys, dataY.Values); } + public void BindXYCombined(IDictionary dataX, IDictionary dataY) + { + ChartX.Series[0].Points.DataBindXY(dataX.Keys, dataX.Values); + ChartX.Series[2].Points.DataBindXY(dataY.Keys, dataY.Values); + } + public void SetCombined() { if (!Combined) |