summaryrefslogtreecommitdiff
path: root/grapher/Models/Charts
diff options
context:
space:
mode:
authorJacobPalecki <[email protected]>2021-01-20 20:13:33 -0800
committerGitHub <[email protected]>2021-01-20 20:13:33 -0800
commit5b6479013c8f35df933dd57c680063f4db1e4028 (patch)
tree60dd7c67a0f163457da2519b42553382a39a591b /grapher/Models/Charts
parentshow custom dialog on bad input (#63) (diff)
parentGuard against bad anisotropy args (diff)
downloadrawaccel-5b6479013c8f35df933dd57c680063f4db1e4028.tar.xz
rawaccel-5b6479013c8f35df933dd57c680063f4db1e4028.zip
Merge pull request #65 from JacobPalecki/Directional
Directionality Features + Graph Fidelity
Diffstat (limited to 'grapher/Models/Charts')
-rw-r--r--grapher/Models/Charts/AccelCharts.cs23
-rw-r--r--grapher/Models/Charts/ChartState/ChartState.cs17
-rw-r--r--grapher/Models/Charts/ChartState/ChartStateManager.cs18
-rw-r--r--grapher/Models/Charts/ChartState/CombinedState.cs28
-rw-r--r--grapher/Models/Charts/ChartState/XYOneGraphState.cs23
-rw-r--r--grapher/Models/Charts/ChartState/XYTwoGraphState.cs20
-rw-r--r--grapher/Models/Charts/ChartXY.cs4
7 files changed, 61 insertions, 72 deletions
diff --git a/grapher/Models/Charts/AccelCharts.cs b/grapher/Models/Charts/AccelCharts.cs
index b7abb35..2369432 100644
--- a/grapher/Models/Charts/AccelCharts.cs
+++ b/grapher/Models/Charts/AccelCharts.cs
@@ -1,9 +1,8 @@
using grapher.Models.Calculations;
+using grapher.Models.Calculations.Data;
using grapher.Models.Charts;
using grapher.Models.Charts.ChartState;
-using grapher.Models.Serialized;
using System;
-using System.Drawing;
using System.Windows.Forms;
namespace grapher
@@ -26,8 +25,14 @@ namespace grapher
var estimatedX = new EstimatedPoints();
var estimatedY = new EstimatedPoints();
SetupCharts(sensitivityChart, velocityChart, gainChart, estimated, estimatedX, estimatedY);
- var accelData = new AccelData(estimated, estimatedX, estimatedY);
- ChartStateManager = new ChartStateManager(sensitivityChart, velocityChart, gainChart, accelData, accelCalculator);
+ ChartStateManager = new ChartStateManager(
+ sensitivityChart,
+ velocityChart,
+ gainChart,
+ accelCalculator,
+ estimated,
+ estimatedY,
+ estimatedX);
ContainingForm = form;
EnableVelocityAndGain = enableVelocityAndGain;
@@ -56,7 +61,7 @@ namespace grapher
private Button WriteButton { get; }
- public AccelData AccelData
+ public IAccelData AccelData
{
get
{
@@ -80,14 +85,6 @@ namespace grapher
}
}
- public int TopChartHeight
- {
- get
- {
- return ChartState.SensitivityChart.Height;
- }
- }
-
private int FormBorderHeight { get; }
private ChartState ChartState { get; set; }
diff --git a/grapher/Models/Charts/ChartState/ChartState.cs b/grapher/Models/Charts/ChartState/ChartState.cs
index 0bb141e..5a86713 100644
--- a/grapher/Models/Charts/ChartState/ChartState.cs
+++ b/grapher/Models/Charts/ChartState/ChartState.cs
@@ -1,4 +1,5 @@
using grapher.Models.Calculations;
+using grapher.Models.Calculations.Data;
using grapher.Models.Serialized;
using System;
using System.Collections.Generic;
@@ -15,13 +16,11 @@ namespace grapher.Models.Charts.ChartState
ChartXY sensitivityChart,
ChartXY velocityChart,
ChartXY gainChart,
- AccelData accelData,
AccelCalculator calculator)
{
SensitivityChart = sensitivityChart;
VelocityChart = velocityChart;
GainChart = gainChart;
- Data = accelData;
Calculator = calculator;
TwoDotsPerGraph = false;
}
@@ -32,7 +31,7 @@ namespace grapher.Models.Charts.ChartState
public ChartXY GainChart { get; }
- public AccelData Data { get; }
+ public IAccelData Data { get; protected set; }
public AccelCalculator Calculator { get; }
@@ -40,13 +39,19 @@ namespace grapher.Models.Charts.ChartState
internal bool TwoDotsPerGraph { get; set; }
- public abstract void MakeDots(double x, double y, double timeInMs);
+ public virtual void MakeDots(double x, double y, double timeInMs)
+ {
+ Data.CalculateDots(x, y, timeInMs);
+ }
public abstract void Bind();
public abstract void Activate();
- public abstract void Calculate(ManagedAccel accel, DriverSettings settings);
+ public virtual void Calculate(ManagedAccel accel, DriverSettings settings)
+ {
+ Data.CreateGraphData(accel, settings);
+ }
public void Redraw()
{
@@ -77,12 +82,14 @@ namespace grapher.Models.Charts.ChartState
public void ShowVelocityAndGain()
{
+ SensitivityChart.SetHeight(Constants.SensitivityChartTogetherHeight);
VelocityChart.Show();
GainChart.Show();
}
public void HideVelocityAndGain()
{
+ SensitivityChart.SetHeight(Constants.SensitivityChartAloneHeight);
VelocityChart.Hide();
GainChart.Hide();
}
diff --git a/grapher/Models/Charts/ChartState/ChartStateManager.cs b/grapher/Models/Charts/ChartState/ChartStateManager.cs
index 54d2e81..3d4bbec 100644
--- a/grapher/Models/Charts/ChartState/ChartStateManager.cs
+++ b/grapher/Models/Charts/ChartState/ChartStateManager.cs
@@ -14,28 +14,32 @@ namespace grapher.Models.Charts.ChartState
ChartXY sensitivityChart,
ChartXY velocityChart,
ChartXY gainChat,
- AccelData accelData,
- AccelCalculator accelCalculator)
+ AccelCalculator accelCalculator,
+ EstimatedPoints combined,
+ EstimatedPoints xPoints,
+ EstimatedPoints yPoints)
{
CombinedState = new CombinedState(
sensitivityChart,
velocityChart,
gainChat,
- accelData,
+ combined,
accelCalculator);
XYOneGraphState = new XYOneGraphState(
sensitivityChart,
velocityChart,
gainChat,
- accelData,
+ xPoints,
+ yPoints,
accelCalculator);
XYTwoGraphState = new XYTwoGraphState(
sensitivityChart,
velocityChart,
gainChat,
- accelData,
+ xPoints,
+ yPoints,
accelCalculator);
}
@@ -52,7 +56,9 @@ namespace grapher.Models.Charts.ChartState
if (settings.combineMagnitudes)
{
- if (settings.sensitivity.x != settings.sensitivity.y)
+ if (settings.sensitivity.x != settings.sensitivity.y ||
+ settings.domainArgs.domainXY.x != settings.domainArgs.domainXY.y ||
+ settings.rangeXY.x != settings.rangeXY.y)
{
chartState = XYOneGraphState;
}
diff --git a/grapher/Models/Charts/ChartState/CombinedState.cs b/grapher/Models/Charts/ChartState/CombinedState.cs
index 9eadb87..3511cec 100644
--- a/grapher/Models/Charts/ChartState/CombinedState.cs
+++ b/grapher/Models/Charts/ChartState/CombinedState.cs
@@ -1,4 +1,5 @@
using grapher.Models.Calculations;
+using grapher.Models.Calculations.Data;
using grapher.Models.Serialized;
namespace grapher.Models.Charts.ChartState
@@ -9,15 +10,16 @@ namespace grapher.Models.Charts.ChartState
ChartXY sensitivityChart,
ChartXY velocityChart,
ChartXY gainChart,
- AccelData accelData,
+ EstimatedPoints points,
AccelCalculator accelCalculator)
: base(
sensitivityChart,
velocityChart,
gainChart,
- accelData,
accelCalculator)
- { }
+ {
+ Data = new AccelDataCombined(points, accelCalculator);
+ }
public override void Activate()
{
@@ -30,23 +32,13 @@ namespace grapher.Models.Charts.ChartState
GainChart.ClearSecondDots();
}
- public override void MakeDots(double x, double y, double timeInMs)
- {
- Data.CalculateDots(x, y, timeInMs);
- }
-
public override void Bind()
{
- SensitivityChart.Bind(Data.Combined.AccelPoints);
- VelocityChart.Bind(Data.Combined.VelocityPoints);
- GainChart.Bind(Data.Combined.GainPoints);
- SensitivityChart.SetMinMax(Data.Combined.MinAccel, Data.Combined.MaxAccel);
- GainChart.SetMinMax(Data.Combined.MinGain, Data.Combined.MaxGain);
- }
-
- public override void Calculate(ManagedAccel accel, DriverSettings settings)
- {
- Calculator.Calculate(Data.Combined, accel, settings.sensitivity.x, Calculator.SimulatedInputCombined);
+ SensitivityChart.Bind(Data.X.AccelPoints);
+ VelocityChart.Bind(Data.X.VelocityPoints);
+ GainChart.Bind(Data.X.GainPoints);
+ SensitivityChart.SetMinMax(Data.X.MinAccel, Data.X.MaxAccel);
+ GainChart.SetMinMax(Data.X.MinGain, Data.X.MaxGain);
}
}
}
diff --git a/grapher/Models/Charts/ChartState/XYOneGraphState.cs b/grapher/Models/Charts/ChartState/XYOneGraphState.cs
index 2b3cd9c..34e9070 100644
--- a/grapher/Models/Charts/ChartState/XYOneGraphState.cs
+++ b/grapher/Models/Charts/ChartState/XYOneGraphState.cs
@@ -1,4 +1,5 @@
using grapher.Models.Calculations;
+using grapher.Models.Calculations.Data;
using grapher.Models.Serialized;
namespace grapher.Models.Charts.ChartState
@@ -9,18 +10,22 @@ namespace grapher.Models.Charts.ChartState
ChartXY sensitivityChart,
ChartXY velocityChart,
ChartXY gainChart,
- AccelData accelData,
+ EstimatedPoints xPoints,
+ EstimatedPoints yPoints,
AccelCalculator accelCalculator)
: base(
sensitivityChart,
velocityChart,
gainChart,
- accelData,
accelCalculator)
{
+ DataDirectional = new AccelDataXYDirectional(xPoints, yPoints, accelCalculator);
+ Data = DataDirectional;
TwoDotsPerGraph = true;
}
+ private AccelDataXYDirectional DataDirectional { get; }
+
public override void Activate()
{
SensitivityChart.SetCombined();
@@ -28,23 +33,13 @@ namespace grapher.Models.Charts.ChartState
GainChart.SetCombined();
}
- public override void MakeDots(double x, double y, double timeInMs)
- {
- Data.CalculateDotsCombinedDiffSens(x, y, timeInMs, Settings);
- }
-
public override void Bind()
{
SensitivityChart.BindXYCombined(Data.X.AccelPoints, Data.Y.AccelPoints);
VelocityChart.BindXYCombined(Data.X.VelocityPoints, Data.Y.VelocityPoints);
GainChart.BindXYCombined(Data.X.GainPoints, Data.Y.GainPoints);
- SensitivityChart.SetMinMax(Data.Combined.MinAccel, Data.Combined.MaxAccel);
- GainChart.SetMinMax(Data.Combined.MinGain, Data.Combined.MaxGain);
- }
-
- public override void Calculate(ManagedAccel accel, DriverSettings settings)
- {
- Calculator.CalculateCombinedDiffSens(Data, accel, settings, Calculator.SimulatedInputCombined);
+ SensitivityChart.SetMinMax(DataDirectional.SensitivityMin, DataDirectional.SensitivityMax);
+ GainChart.SetMinMax(DataDirectional.GainMin, DataDirectional.GainMax);
}
}
}
diff --git a/grapher/Models/Charts/ChartState/XYTwoGraphState.cs b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
index 732ea3c..5b6c2b8 100644
--- a/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
+++ b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
@@ -1,4 +1,5 @@
using grapher.Models.Calculations;
+using grapher.Models.Calculations.Data;
using grapher.Models.Serialized;
using System;
@@ -10,15 +11,17 @@ namespace grapher.Models.Charts.ChartState
ChartXY sensitivityChart,
ChartXY velocityChart,
ChartXY gainChart,
- AccelData accelData,
+ EstimatedPoints xPoints,
+ EstimatedPoints yPoints,
AccelCalculator accelCalculator)
: base(
sensitivityChart,
velocityChart,
gainChart,
- accelData,
accelCalculator)
- { }
+ {
+ Data = new AccelDataXYComponential(xPoints, yPoints, accelCalculator);
+ }
public override DriverSettings Settings { get; set; }
@@ -33,11 +36,6 @@ namespace grapher.Models.Charts.ChartState
GainChart.ClearSecondDots();
}
- public override void MakeDots(double x, double y, double timeInMs)
- {
- Data.CalculateDotsXY(x, y, timeInMs);
- }
-
public override void Bind()
{
SensitivityChart.BindXY(Data.X.AccelPoints, Data.Y.AccelPoints);
@@ -47,11 +45,5 @@ namespace grapher.Models.Charts.ChartState
SensitivityChart.SetMinMaxXY(Data.X.MinAccel, Data.X.MaxAccel, Data.Y.MinAccel, Data.Y.MaxAccel);
GainChart.SetMinMaxXY(Data.X.MinGain, Data.X.MaxGain, Data.Y.MinGain, Data.Y.MaxGain);
}
-
- public override void Calculate(ManagedAccel accel, DriverSettings settings)
- {
- Calculator.Calculate(Data.X, accel, settings.sensitivity.x, Calculator.SimulatedInputX);
- Calculator.Calculate(Data.Y, accel, settings.sensitivity.y, Calculator.SimulatedInputY);
- }
}
}
diff --git a/grapher/Models/Charts/ChartXY.cs b/grapher/Models/Charts/ChartXY.cs
index 553ab3e..bd80ea2 100644
--- a/grapher/Models/Charts/ChartXY.cs
+++ b/grapher/Models/Charts/ChartXY.cs
@@ -244,8 +244,8 @@ namespace grapher
ChartX.ChartAreas[0].AxisY.Maximum = maxX * (1 + VerticalMargin);
VerifyRange(minY, maxY);
- ChartX.ChartAreas[0].AxisY.Minimum = minY * (1 - VerticalMargin);
- ChartX.ChartAreas[0].AxisY.Maximum = maxY * (1 + VerticalMargin);
+ ChartY.ChartAreas[0].AxisY.Minimum = minY * (1 - VerticalMargin);
+ ChartY.ChartAreas[0].AxisY.Maximum = maxY * (1 + VerticalMargin);
}
public void SetCombined()