summaryrefslogtreecommitdiff
path: root/grapher/Models/Calculations
diff options
context:
space:
mode:
authorJacob Palecki <[email protected]>2020-08-13 01:52:49 -0700
committerJacob Palecki <[email protected]>2020-08-13 01:52:49 -0700
commit93a22c08b3223b040c3a3644fc3c4ef82fc576f0 (patch)
tree336d99789e3dac52466c00fb5e07fc82a73c3bc8 /grapher/Models/Calculations
parentAlmost working (diff)
downloadrawaccel-93a22c08b3223b040c3a3644fc3c4ef82fc576f0.tar.xz
rawaccel-93a22c08b3223b040c3a3644fc3c4ef82fc576f0.zip
Dot to show mouse move
Diffstat (limited to 'grapher/Models/Calculations')
-rw-r--r--grapher/Models/Calculations/AccelCalculator.cs10
-rw-r--r--grapher/Models/Calculations/AccelChartData.cs12
-rw-r--r--grapher/Models/Calculations/AccelData.cs32
3 files changed, 49 insertions, 5 deletions
diff --git a/grapher/Models/Calculations/AccelCalculator.cs b/grapher/Models/Calculations/AccelCalculator.cs
index a768ee9..d61a59b 100644
--- a/grapher/Models/Calculations/AccelCalculator.cs
+++ b/grapher/Models/Calculations/AccelCalculator.cs
@@ -23,13 +23,13 @@ namespace grapher.Models.Calculations
public static ReadOnlyCollection<MagnitudeData> MagnitudesX = GetMagnitudesX();
public static ReadOnlyCollection<MagnitudeData> MagnitudesY = GetMagnitudesY();
- public static void Calculate(AccelData data, ManagedAccel accel, double starter)
+ public static void Calculate(AccelData data, ManagedAccel accel, double starterX, double starterY)
{
data.Clear();
- Calculate(data.Combined, accel, starter, MagnitudesCombined);
- Calculate(data.X, accel, starter, MagnitudesX);
- Calculate(data.Y, accel, starter, MagnitudesY);
+ Calculate(data.Combined, accel, starterX, MagnitudesCombined);
+ Calculate(data.X, accel, starterY, MagnitudesX);
+ Calculate(data.Y, accel, starterY, MagnitudesY);
}
public static void Calculate(AccelChartData data, ManagedAccel accel, double starter, ICollection<MagnitudeData> magnitudeData)
@@ -37,7 +37,7 @@ namespace grapher.Models.Calculations
double lastInputMagnitude = 0;
double lastOutputMagnitude = 0;
- foreach (var magnitudeDatum in MagnitudesCombined)
+ foreach (var magnitudeDatum in magnitudeData)
{
var output = accel.Accelerate(magnitudeDatum.x, magnitudeDatum.y, 1);
diff --git a/grapher/Models/Calculations/AccelChartData.cs b/grapher/Models/Calculations/AccelChartData.cs
index 243827a..a3354aa 100644
--- a/grapher/Models/Calculations/AccelChartData.cs
+++ b/grapher/Models/Calculations/AccelChartData.cs
@@ -27,5 +27,17 @@ namespace grapher.Models.Calculations
VelocityPoints.Clear();
GainPoints.Clear();
}
+
+ public (double, double, double) FindInValuesFromOut(double outVelocityValue)
+ {
+ var velIdx = ~VelocityPoints.Values.ToList().BinarySearch(outVelocityValue);
+
+ if (velIdx < 0)
+ {
+ velIdx = ~velIdx;
+ }
+
+ return (VelocityPoints.ElementAt(velIdx).Key, AccelPoints.ElementAt(velIdx).Value, GainPoints.ElementAt(velIdx).Value);
+ }
}
}
diff --git a/grapher/Models/Calculations/AccelData.cs b/grapher/Models/Calculations/AccelData.cs
index a2a6a3a..a8f3307 100644
--- a/grapher/Models/Calculations/AccelData.cs
+++ b/grapher/Models/Calculations/AccelData.cs
@@ -3,11 +3,13 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using static grapher.AccelCharts;
namespace grapher.Models.Calculations
{
public class AccelData
{
+
public AccelData()
{
Combined = new AccelChartData();
@@ -27,5 +29,35 @@ namespace grapher.Models.Calculations
X.Clear();
Y.Clear();
}
+
+ public void CalculateDots(int x, int y, ref EstimatedPoints estimation)
+ {
+ var magnitude = AccelCalculator.Magnitude(x, y);
+
+ estimation.CombinedVelocity.Y = magnitude;
+ estimation.XVelocity.Y = Math.Abs(x);
+ estimation.YVelocity.Y = Math.Abs(y);
+
+ (var inCombVel, var combSens, var combGain) = Combined.FindInValuesFromOut(magnitude);
+ estimation.CombinedVelocity.X = inCombVel;
+ estimation.CombinedSensitivity.X = inCombVel;
+ estimation.CombinedGain.X = inCombVel;
+ estimation.CombinedSensitivity.Y = combSens;
+ estimation.CombinedGain.Y = combGain;
+
+ (var inXVel, var xSens, var xGain) = X.FindInValuesFromOut(estimation.XVelocity.Y);
+ estimation.XVelocity.X = inXVel;
+ estimation.XSensitivity.X = inXVel;
+ estimation.XGain.X = inXVel;
+ estimation.XSensitivity.Y = xSens;
+ estimation.XGain.Y = xGain;
+
+ (var inYVel, var ySens, var yGain) = Y.FindInValuesFromOut(estimation.YVelocity.Y);
+ estimation.YVelocity.X = inYVel;
+ estimation.YSensitivity.X = inYVel;
+ estimation.YGain.X = inYVel;
+ estimation.YSensitivity.Y = ySens;
+ estimation.YGain.Y = yGain;
+ }
}
}