summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--grapher/Models/AccelGUI.cs2
-rw-r--r--grapher/Models/Calculations/AccelCalculator.cs17
-rw-r--r--grapher/Models/Calculations/AccelChartData.cs5
-rw-r--r--grapher/Models/Calculations/AccelData.cs32
-rw-r--r--grapher/Models/Charts/AccelCharts.cs6
-rw-r--r--grapher/Models/Charts/ChartXY.cs2
-rw-r--r--grapher/Models/Mouse/MouseWatcher.cs16
-rw-r--r--grapher/Models/Mouse/PointData.cs11
-rw-r--r--wrapper/wrapper.cpp10
-rw-r--r--wrapper/wrapper.hpp4
10 files changed, 62 insertions, 43 deletions
diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs
index a63bf07..8eb2226 100644
--- a/grapher/Models/AccelGUI.cs
+++ b/grapher/Models/AccelGUI.cs
@@ -91,7 +91,7 @@ namespace grapher
public void UpdateGraph()
{
- AccelCalculator.Calculate(AccelCharts.AccelData, ManagedAcceleration, Sensitivity.Fields.X, Sensitivity.Fields.Y);
+ AccelCalculator.Calculate(AccelCharts.AccelData, ManagedAcceleration);
AccelCharts.Bind();
}
diff --git a/grapher/Models/Calculations/AccelCalculator.cs b/grapher/Models/Calculations/AccelCalculator.cs
index e194854..bba3c32 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 starterX, double starterY)
+ public static void Calculate(AccelData data, ManagedAccel accel)
{
data.Clear();
- Calculate(data.Combined, accel, starterX, MagnitudesCombined);
- Calculate(data.X, accel, starterY, MagnitudesX);
- Calculate(data.Y, accel, starterY, MagnitudesY);
+ Calculate(data.Combined, accel, accel.GetSensitivityX(), MagnitudesCombined);
+ Calculate(data.X, accel, accel.GetSensitivityX(), MagnitudesX);
+ Calculate(data.Y, accel, accel.GetSensitivityY(), MagnitudesY);
}
public static void Calculate(AccelChartData data, ManagedAccel accel, double starter, ICollection<MagnitudeData> magnitudeData)
@@ -132,5 +132,14 @@ namespace grapher.Models.Calculations
return Math.Sqrt(x * x + y * y);
}
+ public static double Velocity(int x, int y, double time)
+ {
+ return Magnitude(x, y) / time;
+ }
+
+ public static double Velocity(double x, double y, double time)
+ {
+ return Magnitude(x, y) / time;
+ }
}
}
diff --git a/grapher/Models/Calculations/AccelChartData.cs b/grapher/Models/Calculations/AccelChartData.cs
index fa31f35..20142a7 100644
--- a/grapher/Models/Calculations/AccelChartData.cs
+++ b/grapher/Models/Calculations/AccelChartData.cs
@@ -36,7 +36,7 @@ namespace grapher.Models.Calculations
OutVelocityToPoints.Clear();
}
- public (double, double, double) FindInValuesFromOut(double outVelocityValue)
+ public (double, double, double) FindPointValuesFromOut(double outVelocityValue)
{
if (OutVelocityToPoints.TryGetValue(outVelocityValue, out var values))
{
@@ -52,11 +52,8 @@ namespace grapher.Models.Calculations
}
velIdx = Math.Min(velIdx, VelocityPoints.Count - 1);
-
values = (VelocityPoints.ElementAt(velIdx).Key, AccelPoints.ElementAt(velIdx).Value, GainPoints.ElementAt(velIdx).Value);
-
OutVelocityToPoints.Add(outVelocityValue, values);
-
return values;
}
}
diff --git a/grapher/Models/Calculations/AccelData.cs b/grapher/Models/Calculations/AccelData.cs
index 6fb4767..683c67e 100644
--- a/grapher/Models/Calculations/AccelData.cs
+++ b/grapher/Models/Calculations/AccelData.cs
@@ -44,30 +44,30 @@ namespace grapher.Models.Calculations
Y.Clear();
}
- public void CalculateDots(int x, int y)
+ public void CalculateDots(int x, int y, double timeInMs)
{
- var magnitude = AccelCalculator.Magnitude(x, y);
+ var magnitude = AccelCalculator.Velocity(x, y, timeInMs);
- (var inCombVel, var combSens, var combGain) = Combined.FindInValuesFromOut(magnitude);
+ (var inCombVel, var combSens, var combGain) = Combined.FindPointValuesFromOut(magnitude);
Estimated.Velocity.Set(inCombVel, magnitude);
Estimated.Sensitivity.Set(inCombVel, combSens);
Estimated.Gain.Set(inCombVel, combGain);
}
- public void CalculateDotsXY(int x, int y)
+ public void CalculateDotsXY(int x, int y, double timeInMs)
{
- var magnitudeX = Math.Abs(x);
- var magnitudeY = Math.Abs(y);
-
- (var inXVel, var xSens, var xGain) = X.FindInValuesFromOut(magnitudeX);
- EstimatedX.Velocity.Set(inXVel, magnitudeX);
- EstimatedX.Sensitivity.Set(inXVel, xSens);
- EstimatedX.Gain.Set(inXVel, xGain);
-
- (var inYVel, var ySens, var yGain) = Y.FindInValuesFromOut(magnitudeY);
- EstimatedY.Velocity.Set(inYVel, magnitudeY);
- EstimatedY.Sensitivity.Set(inYVel, ySens);
- EstimatedY.Gain.Set(inYVel, yGain);
+ var outX = Math.Abs(x);
+ var outY = Math.Abs(y);
+
+ (var inXVelocity, var xSensitivity, var xGain) = X.FindPointValuesFromOut(outX);
+ EstimatedX.Velocity.Set(inXVelocity, outX);
+ EstimatedX.Sensitivity.Set(inXVelocity, xSensitivity);
+ EstimatedX.Gain.Set(inXVelocity, xGain);
+
+ (var inYVelocity, var ySensitivity, var yGain) = Y.FindPointValuesFromOut(outY);
+ EstimatedY.Velocity.Set(inYVelocity, outY);
+ EstimatedY.Sensitivity.Set(inYVelocity, ySensitivity);
+ EstimatedY.Gain.Set(inYVelocity, yGain);
}
}
diff --git a/grapher/Models/Charts/AccelCharts.cs b/grapher/Models/Charts/AccelCharts.cs
index 42377c4..1aa3909 100644
--- a/grapher/Models/Charts/AccelCharts.cs
+++ b/grapher/Models/Charts/AccelCharts.cs
@@ -84,15 +84,15 @@ namespace grapher
private int FormBorderHeight { get; }
- public void MakeDots(int x, int y)
+ public void MakeDots(int x, int y, double timeInMs)
{
if (Combined)
{
- AccelData.CalculateDots(x, y);
+ AccelData.CalculateDots(x, y, timeInMs);
}
else
{
- AccelData.CalculateDotsXY(x, y);
+ AccelData.CalculateDotsXY(x, y, timeInMs);
}
}
diff --git a/grapher/Models/Charts/ChartXY.cs b/grapher/Models/Charts/ChartXY.cs
index c0c8713..81874a2 100644
--- a/grapher/Models/Charts/ChartXY.cs
+++ b/grapher/Models/Charts/ChartXY.cs
@@ -121,7 +121,7 @@ namespace grapher
{
if (chart.Visible)
{
- (var x, var y) = point.Get();
+ point.Get(out var x, out var y);
chart.Series[1].Points.DataBindXY(x, y);
chart.Update();
}
diff --git a/grapher/Models/Mouse/MouseWatcher.cs b/grapher/Models/Mouse/MouseWatcher.cs
index 9b1479e..fea4e2d 100644
--- a/grapher/Models/Mouse/MouseWatcher.cs
+++ b/grapher/Models/Mouse/MouseWatcher.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
@@ -691,18 +692,21 @@ namespace grapher.Models.Mouse
RAWINPUTDEVICE[] devices = new RAWINPUTDEVICE[1];
devices[0] = device;
RegisterRawInputDevices(devices, 1, Marshal.SizeOf(typeof(RAWINPUTDEVICE)));
+ PollTime = 1;
}
- Form ContainingForm { get; }
+ private Form ContainingForm { get; }
- Label Display { get; }
+ private Label Display { get; }
- AccelCharts AccelCharts { get; }
+ private AccelCharts AccelCharts { get; }
- public void OnMouseMove(int x, int y)
+ private double PollTime { get; }
+
+ public void OnMouseMove(int x, int y, double timeInMs)
{
Display.Text = $"Last (x, y): ({x}, {y})";
- AccelCharts.MakeDots(x, y);
+ AccelCharts.MakeDots(x, y, timeInMs);
}
public void ReadMouseMove(Message message)
@@ -715,7 +719,7 @@ namespace grapher.Models.Mouse
if (rawInput.Data.Mouse.LastX != 0 || rawInput.Data.Mouse.LastY != 0)
{
- OnMouseMove(rawInput.Data.Mouse.LastX, rawInput.Data.Mouse.LastY);
+ OnMouseMove(rawInput.Data.Mouse.LastX, rawInput.Data.Mouse.LastY, PollTime);
}
}
diff --git a/grapher/Models/Mouse/PointData.cs b/grapher/Models/Mouse/PointData.cs
index d0273d5..12a6e73 100644
--- a/grapher/Models/Mouse/PointData.cs
+++ b/grapher/Models/Mouse/PointData.cs
@@ -29,18 +29,13 @@ namespace grapher.Models.Mouse
}
}
- public (double[], double[]) Get()
+ public void Get(out double[] x, out double[] y)
{
- double[] xRet;
- double[] yRet;
-
lock(Lock)
{
- xRet = X;
- yRet = Y;
+ x = X;
+ y = Y;
}
-
- return (xRet, yRet);
}
}
}
diff --git a/wrapper/wrapper.cpp b/wrapper/wrapper.cpp
index 0afb386..6a92caa 100644
--- a/wrapper/wrapper.cpp
+++ b/wrapper/wrapper.cpp
@@ -5,6 +5,16 @@
using namespace rawaccel;
using namespace System;
+double ManagedAccel::GetSensitivityX()
+{
+ return modifier_instance->sensitivity.x;
+}
+
+double ManagedAccel::GetSensitivityY()
+{
+ return modifier_instance->sensitivity.y;
+}
+
Tuple<double, double>^ ManagedAccel::Accelerate(int x, int y, double time)
{
vec2d input_vec2d = {
diff --git a/wrapper/wrapper.hpp b/wrapper/wrapper.hpp
index 20ee095..b086672 100644
--- a/wrapper/wrapper.hpp
+++ b/wrapper/wrapper.hpp
@@ -40,6 +40,10 @@ public:
}
}
+ double GetSensitivityX();
+
+ double GetSensitivityY();
+
mouse_modifier* GetInstance()
{
return modifier_instance;