summaryrefslogtreecommitdiff
path: root/grapher
diff options
context:
space:
mode:
authora1xd <[email protected]>2020-07-31 05:12:04 -0400
committerGitHub <[email protected]>2020-07-31 05:12:04 -0400
commitd5c012bcd5b7321671f9591a3e58d0b2c9507467 (patch)
treefe64110f7678607947d19c5ba0b46ea2b15d69c4 /grapher
parentMerge pull request #5 from JacobPalecki/WrapperAndGrapher (diff)
parentupdate grapher/wrapper for st-refactor (diff)
downloadrawaccel-d5c012bcd5b7321671f9591a3e58d0b2c9507467.tar.xz
rawaccel-d5c012bcd5b7321671f9591a3e58d0b2c9507467.zip
Merge pull request #6 from a1xd/st-refactor
Refactor
Diffstat (limited to 'grapher')
-rw-r--r--grapher/Form1.cs71
1 files changed, 69 insertions, 2 deletions
diff --git a/grapher/Form1.cs b/grapher/Form1.cs
index 1915b01..47ef1d9 100644
--- a/grapher/Form1.cs
+++ b/grapher/Form1.cs
@@ -7,22 +7,89 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
+using System.Runtime.InteropServices;
namespace grapher
{
+ public enum accel_mode
+ {
+ linear=1, classic, natural, logarithmic, sigmoid, power, noaccel
+ }
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
+ public struct vec2d
+ {
+ public double x;
+ public double y;
+ }
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
+ public struct accel_args
+ {
+ public double offset;
+ public double accel;
+ public double limit;
+ public double exponent;
+ public double midpoint;
+ public double power_scale;
+ public vec2d weight;
+ }
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
+ public struct accel_fn_args
+ {
+ public accel_args acc_args;
+ public int accel_mode;
+ public double time_min;
+ public vec2d cap;
+ }
+
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
+ public struct modifier_args
+ {
+ public double degrees;
+ public vec2d sens;
+ public accel_fn_args acc_fn_args;
+ }
+
public partial class RawAcceleration : Form
{
public RawAcceleration()
{
InitializeComponent();
- var managedAccel = new ManagedAccel(6, 0, 1, 0.025, 0);
+
+ modifier_args args;
+
+ args.degrees = 0;
+ args.sens.x = 1;
+ args.sens.y = 1;
+ args.acc_fn_args.acc_args.offset = 0;
+ args.acc_fn_args.acc_args.accel = 0.01;
+ args.acc_fn_args.acc_args.limit = 2;
+ args.acc_fn_args.acc_args.exponent = 1;
+ args.acc_fn_args.acc_args.midpoint = 0;
+ args.acc_fn_args.acc_args.power_scale = 1;
+ args.acc_fn_args.acc_args.weight.x = 1;
+ args.acc_fn_args.acc_args.weight.y = 1;
+ args.acc_fn_args.accel_mode = (int)accel_mode.natural;
+ args.acc_fn_args.time_min = 0.4;
+ args.acc_fn_args.cap.x = 0;
+ args.acc_fn_args.cap.y = 0;
+
+ IntPtr args_ptr = Marshal.AllocHGlobal(Marshal.SizeOf(args));
+ Marshal.StructureToPtr(args, args_ptr, false);
+
+ var managedAccel = new ManagedAccel(args_ptr);
+
+ Marshal.FreeHGlobal(args_ptr);
+
var orderedPoints = new SortedDictionary<double, double>();
for (int i = 0; i < 100; i++)
{
for (int j = 0; j <= i; j++)
{
- var output = managedAccel.Accelerate(i, j, 1, 6);
+ var output = managedAccel.Accelerate(i, j, 1);
var inMagnitude = Magnitude(i,j);
var outMagnitude = Magnitude(output.Item1, output.Item2);