summaryrefslogtreecommitdiff
path: root/grapher/Models/Charts/ChartState
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2020-09-17 01:29:18 -0700
committerJacob Palecki <[email protected]>2020-09-17 01:29:18 -0700
commit5beedd6d1aca73adaae6556ded584d3f454509b0 (patch)
treeb0aa89c37dcdae4ad2533ba5b60e75c584b47eb3 /grapher/Models/Charts/ChartState
parentAdd chart states to grapher (diff)
downloadrawaccel-5beedd6d1aca73adaae6556ded584d3f454509b0.tar.xz
rawaccel-5beedd6d1aca73adaae6556ded584d3f454509b0.zip
Much progress
Diffstat (limited to 'grapher/Models/Charts/ChartState')
-rw-r--r--grapher/Models/Charts/ChartState/ChartState.cs3
-rw-r--r--grapher/Models/Charts/ChartState/ChartStateManager.cs12
-rw-r--r--grapher/Models/Charts/ChartState/XYOneGraphState.cs18
-rw-r--r--grapher/Models/Charts/ChartState/XYTwoGraphState.cs32
4 files changed, 61 insertions, 4 deletions
diff --git a/grapher/Models/Charts/ChartState/ChartState.cs b/grapher/Models/Charts/ChartState/ChartState.cs
index b450357..cc334ac 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.Serialized;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -30,6 +31,8 @@ namespace grapher.Models.Charts.ChartState
public AccelData AccelData { get; }
+ public virtual DriverSettings Settings { get; set; }
+
public abstract void MakeDots(int x, int y, double timeInMs);
public abstract void Bind();
diff --git a/grapher/Models/Charts/ChartState/ChartStateManager.cs b/grapher/Models/Charts/ChartState/ChartStateManager.cs
index 27d0836..b64b1a2 100644
--- a/grapher/Models/Charts/ChartState/ChartStateManager.cs
+++ b/grapher/Models/Charts/ChartState/ChartStateManager.cs
@@ -41,23 +41,29 @@ namespace grapher.Models.Charts.ChartState
private XYTwoGraphState XYTwoGraphState { get; }
+
public ChartState DetermineState(DriverSettings settings)
{
+ ChartState chartState;
+
if (settings.combineMagnitudes)
{
if (settings.sensitivity.x != settings.sensitivity.y)
{
- return XYOneGraphState;
+ chartState = XYOneGraphState;
}
else
{
- return CombinedState;
+ chartState = CombinedState;
}
}
else
{
- return XYTwoGraphState;
+ chartState = XYTwoGraphState;
}
+
+ chartState.Settings = settings;
+ return chartState;
}
public ChartState InitialState()
diff --git a/grapher/Models/Charts/ChartState/XYOneGraphState.cs b/grapher/Models/Charts/ChartState/XYOneGraphState.cs
index 58276e4..3ed5c5b 100644
--- a/grapher/Models/Charts/ChartState/XYOneGraphState.cs
+++ b/grapher/Models/Charts/ChartState/XYOneGraphState.cs
@@ -16,5 +16,23 @@ namespace grapher.Models.Charts.ChartState
accelData)
{ }
+ public override void Activate()
+ {
+ SensitivityChart.SetSeparate();
+ VelocityChart.SetSeparate();
+ GainChart.SetSeparate();
+ }
+
+ public override void MakeDots(int x, int y, double timeInMs)
+ {
+ AccelData.CalculateDotsXY(x, y, timeInMs);
+ }
+
+ public override void Bind()
+ {
+ SensitivityChart.BindXY(AccelData.X.AccelPoints, AccelData.Y.AccelPoints);
+ VelocityChart.BindXY(AccelData.X.VelocityPoints, AccelData.Y.VelocityPoints);
+ GainChart.BindXY(AccelData.X.GainPoints, AccelData.Y.GainPoints);
+ }
}
}
diff --git a/grapher/Models/Charts/ChartState/XYTwoGraphState.cs b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
index f37af08..b54832c 100644
--- a/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
+++ b/grapher/Models/Charts/ChartState/XYTwoGraphState.cs
@@ -1,9 +1,13 @@
using grapher.Models.Calculations;
+using grapher.Models.Serialized;
+using System;
namespace grapher.Models.Charts.ChartState
{
public class XYTwoGraphState : ChartState
{
+ private DriverSettings _settings;
+
public XYTwoGraphState(
ChartXY sensitivityChart,
ChartXY velocityChart,
@@ -16,6 +20,24 @@ namespace grapher.Models.Charts.ChartState
accelData)
{ }
+ public override DriverSettings Settings
+ {
+ get { return _settings; }
+ set
+ {
+ _settings = value;
+ ShouldStripSens = AccelCalculator.ShouldStripSens(ref value);
+ if (ShouldStripSens)
+ {
+ Sensitivity = AccelCalculator.GetSens(ref value);
+ }
+ }
+ }
+
+ private bool ShouldStripSens { get; set; }
+
+ private (double, double) Sensitivity { get; set; }
+
public override void Activate()
{
SensitivityChart.SetSeparate();
@@ -25,7 +47,15 @@ namespace grapher.Models.Charts.ChartState
public override void MakeDots(int x, int y, double timeInMs)
{
- AccelData.CalculateDotsXY(x, y, timeInMs);
+ double xCalc = x;
+ double yCalc = y;
+
+ if (ShouldStripSens)
+ {
+ (xCalc, yCalc) = AccelCalculator.StripSens(xCalc, yCalc, Sensitivity.Item1, Sensitivity.Item2);
+ }
+
+ AccelData.CalculateDotsXY((int)Math.Round(xCalc), (int)Math.Round(yCalc), timeInMs);
}
public override void Bind()