generalize power start-from-1

starting output is determined by (gain) offset
This commit is contained in:
a1xd 2021-09-18 05:20:53 -04:00
parent 1fd8881608
commit 115030165d
21 changed files with 317 additions and 411 deletions

View file

@ -11,13 +11,13 @@ namespace rawaccel {
struct classic_base { struct classic_base {
double base_fn(double x, double accel_raised, const accel_args& args) const double base_fn(double x, double accel_raised, const accel_args& args) const
{ {
return accel_raised * pow(x - args.offset, args.exponent_classic) / x; return accel_raised * pow(x - args.input_offset, args.exponent_classic) / x;
} }
static double base_accel(double x, double y, const accel_args& args) static double base_accel(double x, double y, const accel_args& args)
{ {
auto power = args.exponent_classic; auto power = args.exponent_classic;
return pow(x * y * pow(x - args.offset, -power), 1 / (power - 1)); return pow(x * y * pow(x - args.input_offset, -power), 1 / (power - 1));
} }
}; };
@ -70,7 +70,7 @@ namespace rawaccel {
double operator()(double x, const accel_args& args) const double operator()(double x, const accel_args& args) const
{ {
if (x <= args.offset) return 1; if (x <= args.input_offset) return 1;
return sign * minsd(base_fn(x, accel_raised, args), cap) + 1; return sign * minsd(base_fn(x, accel_raised, args), cap) + 1;
} }
@ -96,7 +96,7 @@ namespace rawaccel {
} }
{ {
double a = gain_accel(cap.x, cap.y, args.exponent_classic, args.offset); double a = gain_accel(cap.x, cap.y, args.exponent_classic, args.input_offset);
accel_raised = pow(a, args.exponent_classic - 1); accel_raised = pow(a, args.exponent_classic - 1);
} }
constant = (base_fn(cap.x, accel_raised, args) - cap.y) * cap.x; constant = (base_fn(cap.x, accel_raised, args) - cap.y) * cap.x;
@ -105,7 +105,7 @@ namespace rawaccel {
accel_raised = pow(args.acceleration, args.exponent_classic - 1); accel_raised = pow(args.acceleration, args.exponent_classic - 1);
if (args.cap.x > 0) { if (args.cap.x > 0) {
cap.x = args.cap.x; cap.x = args.cap.x;
cap.y = gain(cap.x, args.acceleration, args.exponent_classic, args.offset); cap.y = gain(cap.x, args.acceleration, args.exponent_classic, args.input_offset);
constant = (base_fn(cap.x, accel_raised, args) - cap.y) * cap.x; constant = (base_fn(cap.x, accel_raised, args) - cap.y) * cap.x;
} }
break; break;
@ -121,7 +121,7 @@ namespace rawaccel {
sign = -sign; sign = -sign;
} }
cap.x = gain_inverse(cap.y, args.acceleration, args.exponent_classic, args.offset); cap.x = gain_inverse(cap.y, args.acceleration, args.exponent_classic, args.input_offset);
constant = (base_fn(cap.x, accel_raised, args) - cap.y) * cap.x; constant = (base_fn(cap.x, accel_raised, args) - cap.y) * cap.x;
} }
break; break;
@ -132,7 +132,7 @@ namespace rawaccel {
{ {
double output; double output;
if (x <= args.offset) return 1; if (x <= args.input_offset) return 1;
if (x < cap.x) { if (x < cap.x) {
output = base_fn(x, accel_raised, args); output = base_fn(x, accel_raised, args);

View file

@ -11,7 +11,7 @@ namespace rawaccel {
double limit; double limit;
natural_base(const accel_args& args) : natural_base(const accel_args& args) :
offset(args.offset), offset(args.input_offset),
limit(args.limit - 1) limit(args.limit - 1)
{ {
accel = args.decay_rate / fabs(limit); accel = args.decay_rate / fabs(limit);

View file

@ -7,10 +7,66 @@
namespace rawaccel { namespace rawaccel {
struct power_base { struct power_base {
static double base_fn(double x, double scale, const accel_args& args) vec2d offset;
double scale;
double constant;
power_base(const accel_args& args)
{ {
// f(x) = w(mx)^k auto n = args.exponent_power;
return pow(scale * x, args.exponent_power);
if (args.cap_mode != classic_cap_mode::io) {
scale = args.scale;
}
else if (args.gain) {
scale = scale_from_gain_point(args.cap.x, args.cap.y, n);
}
else {
/*
* special case for legacy + io cap mode
*
* offset is ignored because of the circular dependency:
* scale -> constant -> offset
*/
offset = {};
constant = 0;
scale = scale_from_sens_point(args.cap.x, args.cap.y, n, constant);
return;
}
offset.x = gain_inverse(args.output_offset, n, scale);
offset.y = args.output_offset;
constant = offset.x * offset.y * n / (n + 1);
}
double base_fn(double x, const accel_args& args) const
{
if (x <= offset.x) {
return offset.y;
}
else {
return pow(scale * x, args.exponent_power) + constant / x;
}
}
static double gain(double input, double power, double scale)
{
return (power + 1) * pow(input * scale, power);
}
static double gain_inverse(double gain, double power, double scale)
{
return pow(gain / (power + 1), 1 / power) / scale;
}
static double scale_from_gain_point(double input, double gain, double power)
{
return pow(gain / (power + 1), 1 / power) / input;
}
static double scale_from_sens_point(double input, double sens, double power, double C)
{
return pow(sens - C / input, 1 / power) / input;
} }
}; };
@ -19,88 +75,44 @@ namespace rawaccel {
template <> template <>
struct power<LEGACY> : power_base { struct power<LEGACY> : power_base {
double cap = DBL_MAX; double cap = DBL_MAX;
double scale = 0;
power(const accel_args& args) power(const accel_args& args) :
power_base(args)
{ {
// Note that cap types may overwrite scale below.
scale = args.scale;
switch (args.cap_mode){ switch (args.cap_mode){
case classic_cap_mode::in:
if (args.cap.x > 0)
{
cap = base_fn(
args.cap.x,
args.scale,
args);
}
break;
case classic_cap_mode::io: case classic_cap_mode::io:
if (args.cap.x > 0 && cap = args.cap.y;
args.cap.y > 1) break;
{ case classic_cap_mode::in:
cap = args.cap.y; if (args.cap.x > 0) cap = base_fn(args.cap.x, args);
scale = scale_from_sens_point(
args.cap.y,
args.cap.x,
args.exponent_power);
}
break; break;
case classic_cap_mode::out: case classic_cap_mode::out:
default: default:
if (args.cap.y > 1) if (args.cap.y > 0) cap = args.cap.y;
{
cap = args.cap.y;
}
break; break;
} }
/*
if (args.cap.x > 0) {
cap.x = args.cap.x;
cap.y = base_fn(cap.x, args);
}
*/
} }
double operator()(double speed, const accel_args& args) const double operator()(double speed, const accel_args& args) const
{ {
if (args.powerStartFromOne) { return minsd(base_fn(speed, args), cap);
return minsd(maxsd(base_fn(speed, scale, args), 1), cap);
}
else {
return minsd(base_fn(speed, scale, args), cap);
}
} }
double static scale_from_sens_point(double sens, double input, double power)
{
return pow(sens, 1 / power) / input;
}
}; };
template <> template <>
struct power<GAIN> : power_base { struct power<GAIN> : power_base {
vec2d cap = { DBL_MAX, DBL_MAX }; vec2d cap = { DBL_MAX, DBL_MAX };
double constant = 0; double constant_b;
double scale = 0;
vec2d startFromOne{ 0, 0 };
power(const accel_args& args) power(const accel_args& args) :
power_base(args)
{ {
/*
if (args.cap.x > 0) {
cap.x = args.cap.x;
double output = base_fn(cap.x, args);
cap.y = output * (args.exponent_power + 1);
constant = -args.exponent_power * output * args.cap.x;
}
*/
// Note that cap types may overwrite this below.
scale = args.scale;
switch (args.cap_mode) { switch (args.cap_mode) {
case classic_cap_mode::io:
cap = args.cap;
break;
case classic_cap_mode::in: case classic_cap_mode::in:
if (args.cap.x > 0) { if (args.cap.x > 0) {
cap.x = args.cap.x; cap.x = args.cap.x;
@ -110,111 +122,32 @@ namespace rawaccel {
scale); scale);
} }
break; break;
case classic_cap_mode::io:
if (args.cap.x > 0 &&
args.cap.y > 1) {
cap.x = args.cap.x;
cap.y = args.cap.y;
scale = scale_from_gain_point(
args.cap.x,
args.cap.y,
args.exponent_power);
}
break;
case classic_cap_mode::out: case classic_cap_mode::out:
default: default:
if (args.cap.y > 1) { if (args.cap.y > 0) {
cap.y = args.cap.y;
cap.x = gain_inverse( cap.x = gain_inverse(
args.cap.y, args.cap.y,
args.exponent_power, args.exponent_power,
scale); scale);
cap.y = args.cap.y;
} }
break; break;
} }
if (args.powerStartFromOne) constant_b = integration_constant(cap.x, cap.y, base_fn(cap.x, args));
{
startFromOne.x = gain_inverse(
1,
args.exponent_power,
scale);
startFromOne.y = -1 * integration_constant(startFromOne.x,
1,
base_fn(startFromOne.x, scale, args));
}
if (cap.x < DBL_MAX && cap.y < DBL_MAX)
{
if (args.powerStartFromOne) {
constant = integration_constant(
cap.x,
cap.y,
startFromOneOutput(
startFromOne,
cap.x,
scale,
args));
}
else {
constant = integration_constant(
cap.x,
cap.y,
base_fn(cap.x, scale, args));
}
}
} }
double operator()(double speed, const accel_args& args) const double operator()(double speed, const accel_args& args) const
{ {
if (speed < cap.x) { if (speed < cap.x) {
if (args.powerStartFromOne) { return base_fn(speed, args);
return startFromOneOutput(
startFromOne,
speed,
scale,
args);
}
else {
return base_fn(speed, scale, args);
}
} }
else { else {
return cap.y + constant / speed; return cap.y + constant_b / speed;
} }
} }
double static startFromOneOutput( static double integration_constant(double input, double gain, double output)
const vec2d& startFromOne,
double speed,
double scale,
const accel_args& args)
{
if (speed > startFromOne.x) {
return base_fn(speed, scale, args) + startFromOne.y / speed;
}
else
{
return 1;
}
}
double static gain_inverse(double gain, double power, double scale)
{
return pow(gain / (power + 1), 1 / power) / scale;
}
double static gain(double input, double power, double scale)
{
return (power + 1) * pow(input * scale, power);
}
double static scale_from_gain_point(double input, double gain, double power)
{
return pow(gain / (power + 1), 1 / power) / input;
}
double static integration_constant(double input, double gain, double output)
{ {
return (output - gain) * input; return (output - gain) * input;
} }

View file

@ -42,7 +42,8 @@ namespace rawaccel {
accel_mode mode = accel_mode::noaccel; accel_mode mode = accel_mode::noaccel;
bool gain = 1; bool gain = 1;
double offset = 0; double input_offset = 0;
double output_offset = 0;
double acceleration = 0.005; double acceleration = 0.005;
double decay_rate = 0.1; double decay_rate = 0.1;
double growth_rate = 1; double growth_rate = 1;
@ -53,7 +54,7 @@ namespace rawaccel {
double limit = 1.5; double limit = 1.5;
double midpoint = 5; double midpoint = 5;
double smooth = 0.5; double smooth = 0.5;
bool powerStartFromOne = true;
vec2d cap = { 15, 1.5 }; vec2d cap = { 15, 1.5 };
classic_cap_mode cap_mode = classic_cap_mode::out; classic_cap_mode cap_mode = classic_cap_mode::out;

View file

@ -50,16 +50,20 @@ namespace rawaccel {
error("data size > max"); error("data size > max");
} }
if (args.offset < 0) { if (args.input_offset < 0) {
error("offset can not be negative"); error("offset can not be negative");
} }
else if (args.mode == accel_mode::jump && args.offset == 0) { else if (args.mode == accel_mode::jump && args.input_offset == 0) {
error("offset can not be 0"); error("offset can not be 0");
} }
if (args.output_offset < 0) {
error("offset can not be negative");
}
bool jump_or_io_cap = bool jump_or_io_cap =
(args.mode == accel_mode::jump || (args.mode == accel_mode::jump ||
(args.mode == accel_mode::classic && ((args.mode == accel_mode::classic || args.mode == accel_mode::power) &&
args.cap_mode == classic_cap_mode::io)); args.cap_mode == classic_cap_mode::io));
if (args.cap.x < 0) { if (args.cap.x < 0) {
@ -76,6 +80,11 @@ namespace rawaccel {
error("cap (output) can not be 0"); error("cap (output) can not be 0");
} }
if (args.cap.x > 0 && args.cap.x < args.input_offset ||
args.cap.y > 0 && args.cap.y < args.output_offset) {
error("cap < offset");
}
if (args.growth_rate <= 0 || if (args.growth_rate <= 0 ||
args.decay_rate <= 0 || args.decay_rate <= 0 ||
args.acceleration <= 0) { args.acceleration <= 0) {

View file

@ -71,12 +71,6 @@ namespace grapher
System.Windows.Forms.DataVisualization.Charting.Title title6 = new System.Windows.Forms.DataVisualization.Charting.Title(); System.Windows.Forms.DataVisualization.Charting.Title title6 = new System.Windows.Forms.DataVisualization.Charting.Title();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RawAcceleration)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(RawAcceleration));
this.optionsPanel = new System.Windows.Forms.Panel(); this.optionsPanel = new System.Windows.Forms.Panel();
this.powerStartsFromOneBoxY = new System.Windows.Forms.CheckBox();
this.powerStartsFromZeroBoxY = new System.Windows.Forms.CheckBox();
this.powerStartsFromOneBoxX = new System.Windows.Forms.CheckBox();
this.powerStartsFromZeroBoxX = new System.Windows.Forms.CheckBox();
this.powerStartFromLabelY = new System.Windows.Forms.Label();
this.powerStartFromLabelX = new System.Windows.Forms.Label();
this.OutCapActiveYLabelPower = new System.Windows.Forms.Label(); this.OutCapActiveYLabelPower = new System.Windows.Forms.Label();
this.InCapActiveYLabelPower = new System.Windows.Forms.Label(); this.InCapActiveYLabelPower = new System.Windows.Forms.Label();
this.OutCapActiveXLabelPower = new System.Windows.Forms.Label(); this.OutCapActiveXLabelPower = new System.Windows.Forms.Label();
@ -188,22 +182,26 @@ namespace grapher
this.OptionSetXTitle = new System.Windows.Forms.Label(); this.OptionSetXTitle = new System.Windows.Forms.Label();
this.constantThreeLabelY = new System.Windows.Forms.Label(); this.constantThreeLabelY = new System.Windows.Forms.Label();
this.limitLabelY = new System.Windows.Forms.Label(); this.limitLabelY = new System.Windows.Forms.Label();
this.offsetLabelY = new System.Windows.Forms.Label(); this.inputOffsetLabelY = new System.Windows.Forms.Label();
this.outputOffsetLabelY = new System.Windows.Forms.Label();
this.inCapLabelYClassic = new System.Windows.Forms.Label(); this.inCapLabelYClassic = new System.Windows.Forms.Label();
this.constantOneLabelY = new System.Windows.Forms.Label(); this.constantOneLabelY = new System.Windows.Forms.Label();
this.ByComponentXYLock = new System.Windows.Forms.CheckBox(); this.ByComponentXYLock = new System.Windows.Forms.CheckBox();
this.MidpointActiveYLabel = new System.Windows.Forms.Label(); this.MidpointActiveYLabel = new System.Windows.Forms.Label();
this.LimitActiveYLabel = new System.Windows.Forms.Label(); this.LimitActiveYLabel = new System.Windows.Forms.Label();
this.OffsetActiveYLabel = new System.Windows.Forms.Label(); this.InputOffsetActiveYLabel = new System.Windows.Forms.Label();
this.OutputOffsetActiveYLabel = new System.Windows.Forms.Label();
this.AccelerationActiveLabelY = new System.Windows.Forms.Label(); this.AccelerationActiveLabelY = new System.Windows.Forms.Label();
this.accelTypeDropY = new System.Windows.Forms.ComboBox(); this.accelTypeDropY = new System.Windows.Forms.ComboBox();
this.midpointBoxY = new System.Windows.Forms.TextBox(); this.midpointBoxY = new System.Windows.Forms.TextBox();
this.limitBoxY = new System.Windows.Forms.TextBox(); this.limitBoxY = new System.Windows.Forms.TextBox();
this.offsetBoxY = new System.Windows.Forms.TextBox(); this.inputOffsetBoxY = new System.Windows.Forms.TextBox();
this.outputOffsetBoxY = new System.Windows.Forms.TextBox();
this.accelerationBoxY = new System.Windows.Forms.TextBox(); this.accelerationBoxY = new System.Windows.Forms.TextBox();
this.MidpointActiveXLabel = new System.Windows.Forms.Label(); this.MidpointActiveXLabel = new System.Windows.Forms.Label();
this.LimitActiveXLabel = new System.Windows.Forms.Label(); this.LimitActiveXLabel = new System.Windows.Forms.Label();
this.OffsetActiveXLabel = new System.Windows.Forms.Label(); this.InputOffsetActiveXLabel = new System.Windows.Forms.Label();
this.OutputOffsetActiveXLabel = new System.Windows.Forms.Label();
this.InCapActiveYLabelClassic = new System.Windows.Forms.Label(); this.InCapActiveYLabelClassic = new System.Windows.Forms.Label();
this.InCapActiveXLabelClassic = new System.Windows.Forms.Label(); this.InCapActiveXLabelClassic = new System.Windows.Forms.Label();
this.AccelerationActiveLabelX = new System.Windows.Forms.Label(); this.AccelerationActiveLabelX = new System.Windows.Forms.Label();
@ -218,8 +216,10 @@ namespace grapher
this.inCapBoxYClassic = new System.Windows.Forms.TextBox(); this.inCapBoxYClassic = new System.Windows.Forms.TextBox();
this.VertHorzRatioBox = new System.Windows.Forms.TextBox(); this.VertHorzRatioBox = new System.Windows.Forms.TextBox();
this.writeButton = new System.Windows.Forms.Button(); this.writeButton = new System.Windows.Forms.Button();
this.offsetLabelX = new System.Windows.Forms.Label(); this.inputOffsetLabelX = new System.Windows.Forms.Label();
this.offsetBoxX = new System.Windows.Forms.TextBox(); this.outputOffsetLabelX = new System.Windows.Forms.Label();
this.inputOffsetBoxX = new System.Windows.Forms.TextBox();
this.outputOffsetBoxX = new System.Windows.Forms.TextBox();
this.constantThreeLabelX = new System.Windows.Forms.Label(); this.constantThreeLabelX = new System.Windows.Forms.Label();
this.midpointBoxX = new System.Windows.Forms.TextBox(); this.midpointBoxX = new System.Windows.Forms.TextBox();
this.limitLabelX = new System.Windows.Forms.Label(); this.limitLabelX = new System.Windows.Forms.Label();
@ -254,8 +254,6 @@ namespace grapher
this.GainChart = new System.Windows.Forms.DataVisualization.Charting.Chart(); this.GainChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.VelocityChart = new System.Windows.Forms.DataVisualization.Charting.Chart(); this.VelocityChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.AccelerationChart = new System.Windows.Forms.DataVisualization.Charting.Chart(); this.AccelerationChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
this.powerStartFromActiveLabelX = new System.Windows.Forms.Label();
this.powerStartFromActiveLabelY = new System.Windows.Forms.Label();
this.optionsPanel.SuspendLayout(); this.optionsPanel.SuspendLayout();
this.DirectionalityPanel.SuspendLayout(); this.DirectionalityPanel.SuspendLayout();
this.menuStrip1.SuspendLayout(); this.menuStrip1.SuspendLayout();
@ -271,14 +269,6 @@ namespace grapher
// optionsPanel // optionsPanel
// //
this.optionsPanel.AutoSize = true; this.optionsPanel.AutoSize = true;
this.optionsPanel.Controls.Add(this.powerStartFromActiveLabelY);
this.optionsPanel.Controls.Add(this.powerStartFromActiveLabelX);
this.optionsPanel.Controls.Add(this.powerStartsFromOneBoxY);
this.optionsPanel.Controls.Add(this.powerStartsFromZeroBoxY);
this.optionsPanel.Controls.Add(this.powerStartsFromOneBoxX);
this.optionsPanel.Controls.Add(this.powerStartsFromZeroBoxX);
this.optionsPanel.Controls.Add(this.powerStartFromLabelY);
this.optionsPanel.Controls.Add(this.powerStartFromLabelX);
this.optionsPanel.Controls.Add(this.OutCapActiveYLabelPower); this.optionsPanel.Controls.Add(this.OutCapActiveYLabelPower);
this.optionsPanel.Controls.Add(this.InCapActiveYLabelPower); this.optionsPanel.Controls.Add(this.InCapActiveYLabelPower);
this.optionsPanel.Controls.Add(this.OutCapActiveXLabelPower); this.optionsPanel.Controls.Add(this.OutCapActiveXLabelPower);
@ -371,22 +361,26 @@ namespace grapher
this.optionsPanel.Controls.Add(this.OptionSetXTitle); this.optionsPanel.Controls.Add(this.OptionSetXTitle);
this.optionsPanel.Controls.Add(this.constantThreeLabelY); this.optionsPanel.Controls.Add(this.constantThreeLabelY);
this.optionsPanel.Controls.Add(this.limitLabelY); this.optionsPanel.Controls.Add(this.limitLabelY);
this.optionsPanel.Controls.Add(this.offsetLabelY); this.optionsPanel.Controls.Add(this.inputOffsetLabelY);
this.optionsPanel.Controls.Add(this.outputOffsetLabelY);
this.optionsPanel.Controls.Add(this.inCapLabelYClassic); this.optionsPanel.Controls.Add(this.inCapLabelYClassic);
this.optionsPanel.Controls.Add(this.constantOneLabelY); this.optionsPanel.Controls.Add(this.constantOneLabelY);
this.optionsPanel.Controls.Add(this.ByComponentXYLock); this.optionsPanel.Controls.Add(this.ByComponentXYLock);
this.optionsPanel.Controls.Add(this.MidpointActiveYLabel); this.optionsPanel.Controls.Add(this.MidpointActiveYLabel);
this.optionsPanel.Controls.Add(this.LimitActiveYLabel); this.optionsPanel.Controls.Add(this.LimitActiveYLabel);
this.optionsPanel.Controls.Add(this.OffsetActiveYLabel); this.optionsPanel.Controls.Add(this.InputOffsetActiveYLabel);
this.optionsPanel.Controls.Add(this.OutputOffsetActiveYLabel);
this.optionsPanel.Controls.Add(this.AccelerationActiveLabelY); this.optionsPanel.Controls.Add(this.AccelerationActiveLabelY);
this.optionsPanel.Controls.Add(this.accelTypeDropY); this.optionsPanel.Controls.Add(this.accelTypeDropY);
this.optionsPanel.Controls.Add(this.midpointBoxY); this.optionsPanel.Controls.Add(this.midpointBoxY);
this.optionsPanel.Controls.Add(this.limitBoxY); this.optionsPanel.Controls.Add(this.limitBoxY);
this.optionsPanel.Controls.Add(this.offsetBoxY); this.optionsPanel.Controls.Add(this.inputOffsetBoxY);
this.optionsPanel.Controls.Add(this.outputOffsetBoxY);
this.optionsPanel.Controls.Add(this.accelerationBoxY); this.optionsPanel.Controls.Add(this.accelerationBoxY);
this.optionsPanel.Controls.Add(this.MidpointActiveXLabel); this.optionsPanel.Controls.Add(this.MidpointActiveXLabel);
this.optionsPanel.Controls.Add(this.LimitActiveXLabel); this.optionsPanel.Controls.Add(this.LimitActiveXLabel);
this.optionsPanel.Controls.Add(this.OffsetActiveXLabel); this.optionsPanel.Controls.Add(this.InputOffsetActiveXLabel);
this.optionsPanel.Controls.Add(this.OutputOffsetActiveXLabel);
this.optionsPanel.Controls.Add(this.InCapActiveYLabelClassic); this.optionsPanel.Controls.Add(this.InCapActiveYLabelClassic);
this.optionsPanel.Controls.Add(this.InCapActiveXLabelClassic); this.optionsPanel.Controls.Add(this.InCapActiveXLabelClassic);
this.optionsPanel.Controls.Add(this.AccelerationActiveLabelX); this.optionsPanel.Controls.Add(this.AccelerationActiveLabelX);
@ -401,8 +395,10 @@ namespace grapher
this.optionsPanel.Controls.Add(this.inCapBoxYClassic); this.optionsPanel.Controls.Add(this.inCapBoxYClassic);
this.optionsPanel.Controls.Add(this.VertHorzRatioBox); this.optionsPanel.Controls.Add(this.VertHorzRatioBox);
this.optionsPanel.Controls.Add(this.writeButton); this.optionsPanel.Controls.Add(this.writeButton);
this.optionsPanel.Controls.Add(this.offsetLabelX); this.optionsPanel.Controls.Add(this.inputOffsetLabelX);
this.optionsPanel.Controls.Add(this.offsetBoxX); this.optionsPanel.Controls.Add(this.outputOffsetLabelX);
this.optionsPanel.Controls.Add(this.inputOffsetBoxX);
this.optionsPanel.Controls.Add(this.outputOffsetBoxX);
this.optionsPanel.Controls.Add(this.constantThreeLabelX); this.optionsPanel.Controls.Add(this.constantThreeLabelX);
this.optionsPanel.Controls.Add(this.midpointBoxX); this.optionsPanel.Controls.Add(this.midpointBoxX);
this.optionsPanel.Controls.Add(this.limitLabelX); this.optionsPanel.Controls.Add(this.limitLabelX);
@ -423,59 +419,7 @@ namespace grapher
this.optionsPanel.Name = "optionsPanel"; this.optionsPanel.Name = "optionsPanel";
this.optionsPanel.Size = new System.Drawing.Size(483, 956); this.optionsPanel.Size = new System.Drawing.Size(483, 956);
this.optionsPanel.TabIndex = 34; this.optionsPanel.TabIndex = 34;
// //
// powerStartsFromOneBoxY
//
this.powerStartsFromOneBoxY.Location = new System.Drawing.Point(363, 220);
this.powerStartsFromOneBoxY.Name = "powerStartsFromOneBoxY";
this.powerStartsFromOneBoxY.Size = new System.Drawing.Size(32, 17);
this.powerStartsFromOneBoxY.TabIndex = 0;
this.powerStartsFromOneBoxY.Text = "1";
this.powerStartsFromOneBoxY.UseVisualStyleBackColor = true;
//
// powerStartsFromZeroBoxY
//
this.powerStartsFromZeroBoxY.Location = new System.Drawing.Point(332, 220);
this.powerStartsFromZeroBoxY.Name = "powerStartsFromZeroBoxY";
this.powerStartsFromZeroBoxY.Size = new System.Drawing.Size(32, 17);
this.powerStartsFromZeroBoxY.TabIndex = 0;
this.powerStartsFromZeroBoxY.Text = "0";
this.powerStartsFromZeroBoxY.UseVisualStyleBackColor = true;
//
// powerStartsFromOneBoxX
//
this.powerStartsFromOneBoxX.Location = new System.Drawing.Point(136, 220);
this.powerStartsFromOneBoxX.Name = "powerStartsFromOneBoxX";
this.powerStartsFromOneBoxX.Size = new System.Drawing.Size(32, 17);
this.powerStartsFromOneBoxX.TabIndex = 0;
this.powerStartsFromOneBoxX.Text = "1";
this.powerStartsFromOneBoxX.UseVisualStyleBackColor = true;
//
// powerStartsFromZeroBoxX
//
this.powerStartsFromZeroBoxX.Location = new System.Drawing.Point(106, 220);
this.powerStartsFromZeroBoxX.Name = "powerStartsFromZeroBoxX";
this.powerStartsFromZeroBoxX.Size = new System.Drawing.Size(32, 17);
this.powerStartsFromZeroBoxX.TabIndex = 0;
this.powerStartsFromZeroBoxX.Text = "0";
this.powerStartsFromZeroBoxX.UseVisualStyleBackColor = true;
//
// powerStartFromLabelY
//
this.powerStartFromLabelY.Location = new System.Drawing.Point(266, 220);
this.powerStartFromLabelY.Name = "powerStartFromLabelY";
this.powerStartFromLabelY.Size = new System.Drawing.Size(52, 13);
this.powerStartFromLabelY.TabIndex = 0;
this.powerStartFromLabelY.Text = "Start from";
//
// powerStartFromLabelX
//
this.powerStartFromLabelX.Location = new System.Drawing.Point(38, 220);
this.powerStartFromLabelX.Name = "powerStartFromLabelX";
this.powerStartFromLabelX.Size = new System.Drawing.Size(55, 13);
this.powerStartFromLabelX.TabIndex = 0;
this.powerStartFromLabelX.Text = "Start from";
//
// OutCapActiveYLabelPower // OutCapActiveYLabelPower
// //
this.OutCapActiveYLabelPower.AutoSize = true; this.OutCapActiveYLabelPower.AutoSize = true;
@ -1452,12 +1396,19 @@ namespace grapher
// //
// offsetLabelY // offsetLabelY
// //
this.offsetLabelY.AutoSize = true; this.inputOffsetLabelY.AutoSize = true;
this.offsetLabelY.Location = new System.Drawing.Point(263, 248); this.inputOffsetLabelY.Location = new System.Drawing.Point(263, 248);
this.offsetLabelY.Name = "offsetLabelY"; this.inputOffsetLabelY.Name = "inputOffsetLabelY";
this.offsetLabelY.Size = new System.Drawing.Size(35, 13); this.inputOffsetLabelY.Size = new System.Drawing.Size(35, 13);
this.offsetLabelY.TabIndex = 135; this.inputOffsetLabelY.TabIndex = 135;
this.offsetLabelY.Text = "Offset"; this.inputOffsetLabelY.Text = "Input Offset";
this.outputOffsetLabelY.AutoSize = true;
this.outputOffsetLabelY.Location = new System.Drawing.Point(263, 248);
this.outputOffsetLabelY.Name = "outputOffsetLabelY";
this.outputOffsetLabelY.Size = new System.Drawing.Size(35, 13);
this.outputOffsetLabelY.TabIndex = 135;
this.outputOffsetLabelY.Text = "Output Offset";
// //
// inCapLabelYClassic // inCapLabelYClassic
// //
@ -1508,12 +1459,19 @@ namespace grapher
// //
// OffsetActiveYLabel // OffsetActiveYLabel
// //
this.OffsetActiveYLabel.AutoSize = true; this.InputOffsetActiveYLabel.AutoSize = true;
this.OffsetActiveYLabel.Location = new System.Drawing.Point(414, 248); this.InputOffsetActiveYLabel.Location = new System.Drawing.Point(414, 248);
this.OffsetActiveYLabel.Name = "OffsetActiveYLabel"; this.InputOffsetActiveYLabel.Name = "InputOffsetActiveYLabel";
this.OffsetActiveYLabel.Size = new System.Drawing.Size(13, 13); this.InputOffsetActiveYLabel.Size = new System.Drawing.Size(13, 13);
this.OffsetActiveYLabel.TabIndex = 129; this.InputOffsetActiveYLabel.TabIndex = 129;
this.OffsetActiveYLabel.Text = "0"; this.InputOffsetActiveYLabel.Text = "0";
this.OutputOffsetActiveYLabel.AutoSize = true;
this.OutputOffsetActiveYLabel.Location = new System.Drawing.Point(414, 248);
this.OutputOffsetActiveYLabel.Name = "OutputOffsetActiveYLabel";
this.OutputOffsetActiveYLabel.Size = new System.Drawing.Size(13, 13);
this.OutputOffsetActiveYLabel.TabIndex = 129;
this.OutputOffsetActiveYLabel.Text = "0";
// //
// AccelerationActiveLabelY // AccelerationActiveLabelY
// //
@ -1549,10 +1507,15 @@ namespace grapher
// //
// offsetBoxY // offsetBoxY
// //
this.offsetBoxY.Location = new System.Drawing.Point(332, 245); this.inputOffsetBoxY.Location = new System.Drawing.Point(332, 245);
this.offsetBoxY.Name = "offsetBoxY"; this.inputOffsetBoxY.Name = "inputOffsetBoxY";
this.offsetBoxY.Size = new System.Drawing.Size(76, 20); this.inputOffsetBoxY.Size = new System.Drawing.Size(76, 20);
this.offsetBoxY.TabIndex = 106; this.inputOffsetBoxY.TabIndex = 106;
this.outputOffsetBoxY.Location = new System.Drawing.Point(332, 245);
this.outputOffsetBoxY.Name = "outputOffsetBoxY";
this.outputOffsetBoxY.Size = new System.Drawing.Size(76, 20);
this.outputOffsetBoxY.TabIndex = 106;
// //
// accelerationBoxY // accelerationBoxY
// //
@ -1581,12 +1544,19 @@ namespace grapher
// //
// OffsetActiveXLabel // OffsetActiveXLabel
// //
this.OffsetActiveXLabel.AutoSize = true; this.InputOffsetActiveXLabel.AutoSize = true;
this.OffsetActiveXLabel.Location = new System.Drawing.Point(197, 248); this.InputOffsetActiveXLabel.Location = new System.Drawing.Point(197, 248);
this.OffsetActiveXLabel.Name = "OffsetActiveXLabel"; this.InputOffsetActiveXLabel.Name = "InputOffsetActiveXLabel";
this.OffsetActiveXLabel.Size = new System.Drawing.Size(13, 13); this.InputOffsetActiveXLabel.Size = new System.Drawing.Size(13, 13);
this.OffsetActiveXLabel.TabIndex = 125; this.InputOffsetActiveXLabel.TabIndex = 125;
this.OffsetActiveXLabel.Text = "0"; this.InputOffsetActiveXLabel.Text = "0";
this.OutputOffsetActiveXLabel.AutoSize = true;
this.OutputOffsetActiveXLabel.Location = new System.Drawing.Point(197, 248);
this.OutputOffsetActiveXLabel.Name = "OutputOffsetActiveXLabel";
this.OutputOffsetActiveXLabel.Size = new System.Drawing.Size(13, 13);
this.OutputOffsetActiveXLabel.TabIndex = 125;
this.OutputOffsetActiveXLabel.Text = "0";
// //
// InCapActiveYLabelClassic // InCapActiveYLabelClassic
// //
@ -1715,20 +1685,33 @@ namespace grapher
// //
// offsetLabelX // offsetLabelX
// //
this.offsetLabelX.AutoSize = true; this.inputOffsetLabelX.AutoSize = true;
this.offsetLabelX.Location = new System.Drawing.Point(37, 248); this.inputOffsetLabelX.Location = new System.Drawing.Point(37, 248);
this.offsetLabelX.Name = "offsetLabelX"; this.inputOffsetLabelX.Name = "inputOffsetLabelX";
this.offsetLabelX.Size = new System.Drawing.Size(35, 13); this.inputOffsetLabelX.Size = new System.Drawing.Size(35, 13);
this.offsetLabelX.TabIndex = 107; this.inputOffsetLabelX.TabIndex = 107;
this.offsetLabelX.Text = "Offset"; this.inputOffsetLabelX.Text = "Input Offset";
this.offsetLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.inputOffsetLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.outputOffsetLabelX.AutoSize = true;
this.outputOffsetLabelX.Location = new System.Drawing.Point(37, 248);
this.outputOffsetLabelX.Name = "outputOffsetLabelX";
this.outputOffsetLabelX.Size = new System.Drawing.Size(35, 13);
this.outputOffsetLabelX.TabIndex = 107;
this.outputOffsetLabelX.Text = "Output Offset";
this.outputOffsetLabelX.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
// //
// offsetBoxX // offsetBoxX
// //
this.offsetBoxX.Location = new System.Drawing.Point(106, 245); this.inputOffsetBoxX.Location = new System.Drawing.Point(106, 245);
this.offsetBoxX.Name = "offsetBoxX"; this.inputOffsetBoxX.Name = "inputOffsetBoxX";
this.offsetBoxX.Size = new System.Drawing.Size(76, 20); this.inputOffsetBoxX.Size = new System.Drawing.Size(76, 20);
this.offsetBoxX.TabIndex = 92; this.inputOffsetBoxX.TabIndex = 92;
this.outputOffsetBoxX.Location = new System.Drawing.Point(106, 245);
this.outputOffsetBoxX.Name = "outputOffsetBoxX";
this.outputOffsetBoxX.Size = new System.Drawing.Size(76, 20);
this.outputOffsetBoxX.TabIndex = 92;
// //
// constantThreeLabelX // constantThreeLabelX
// //
@ -2206,24 +2189,6 @@ namespace grapher
title6.Text = "Sensitivity"; title6.Text = "Sensitivity";
this.AccelerationChart.Titles.Add(title6); this.AccelerationChart.Titles.Add(title6);
// //
// powerStartFromActiveLabelX
//
this.powerStartFromActiveLabelX.AutoSize = true;
this.powerStartFromActiveLabelX.Location = new System.Drawing.Point(197, 220);
this.powerStartFromActiveLabelX.Name = "powerStartFromActiveLabelX";
this.powerStartFromActiveLabelX.Size = new System.Drawing.Size(13, 13);
this.powerStartFromActiveLabelX.TabIndex = 225;
this.powerStartFromActiveLabelX.Text = "0";
//
// powerStartFromActiveLabelY
//
this.powerStartFromActiveLabelY.AutoSize = true;
this.powerStartFromActiveLabelY.Location = new System.Drawing.Point(414, 221);
this.powerStartFromActiveLabelY.Name = "powerStartFromActiveLabelY";
this.powerStartFromActiveLabelY.Size = new System.Drawing.Size(13, 13);
this.powerStartFromActiveLabelY.TabIndex = 226;
this.powerStartFromActiveLabelY.Text = "0";
//
// RawAcceleration // RawAcceleration
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -2273,22 +2238,26 @@ namespace grapher
private System.Windows.Forms.Label OptionSetXTitle; private System.Windows.Forms.Label OptionSetXTitle;
private System.Windows.Forms.Label constantThreeLabelY; private System.Windows.Forms.Label constantThreeLabelY;
private System.Windows.Forms.Label limitLabelY; private System.Windows.Forms.Label limitLabelY;
private System.Windows.Forms.Label offsetLabelY; private System.Windows.Forms.Label inputOffsetLabelY;
private System.Windows.Forms.Label outputOffsetLabelY;
private System.Windows.Forms.Label inCapLabelYClassic; private System.Windows.Forms.Label inCapLabelYClassic;
private System.Windows.Forms.Label constantOneLabelY; private System.Windows.Forms.Label constantOneLabelY;
private System.Windows.Forms.CheckBox ByComponentXYLock; private System.Windows.Forms.CheckBox ByComponentXYLock;
private System.Windows.Forms.Label MidpointActiveYLabel; private System.Windows.Forms.Label MidpointActiveYLabel;
private System.Windows.Forms.Label LimitActiveYLabel; private System.Windows.Forms.Label LimitActiveYLabel;
private System.Windows.Forms.Label OffsetActiveYLabel; private System.Windows.Forms.Label InputOffsetActiveYLabel;
private System.Windows.Forms.Label OutputOffsetActiveYLabel;
private System.Windows.Forms.Label AccelerationActiveLabelY; private System.Windows.Forms.Label AccelerationActiveLabelY;
private System.Windows.Forms.ComboBox accelTypeDropY; private System.Windows.Forms.ComboBox accelTypeDropY;
private System.Windows.Forms.TextBox midpointBoxY; private System.Windows.Forms.TextBox midpointBoxY;
private System.Windows.Forms.TextBox limitBoxY; private System.Windows.Forms.TextBox limitBoxY;
private System.Windows.Forms.TextBox offsetBoxY; private System.Windows.Forms.TextBox inputOffsetBoxY;
private System.Windows.Forms.TextBox outputOffsetBoxY;
private System.Windows.Forms.TextBox accelerationBoxY; private System.Windows.Forms.TextBox accelerationBoxY;
private System.Windows.Forms.Label MidpointActiveXLabel; private System.Windows.Forms.Label MidpointActiveXLabel;
private System.Windows.Forms.Label LimitActiveXLabel; private System.Windows.Forms.Label LimitActiveXLabel;
private System.Windows.Forms.Label OffsetActiveXLabel; private System.Windows.Forms.Label InputOffsetActiveXLabel;
private System.Windows.Forms.Label OutputOffsetActiveXLabel;
private System.Windows.Forms.Label InCapActiveYLabelClassic; private System.Windows.Forms.Label InCapActiveYLabelClassic;
private System.Windows.Forms.Label InCapActiveXLabelClassic; private System.Windows.Forms.Label InCapActiveXLabelClassic;
private System.Windows.Forms.Label AccelerationActiveLabelX; private System.Windows.Forms.Label AccelerationActiveLabelX;
@ -2303,8 +2272,10 @@ namespace grapher
private System.Windows.Forms.TextBox inCapBoxYClassic; private System.Windows.Forms.TextBox inCapBoxYClassic;
private System.Windows.Forms.TextBox VertHorzRatioBox; private System.Windows.Forms.TextBox VertHorzRatioBox;
private System.Windows.Forms.Button writeButton; private System.Windows.Forms.Button writeButton;
private System.Windows.Forms.Label offsetLabelX; private System.Windows.Forms.Label inputOffsetLabelX;
private System.Windows.Forms.TextBox offsetBoxX; private System.Windows.Forms.Label outputOffsetLabelX;
private System.Windows.Forms.TextBox inputOffsetBoxX;
private System.Windows.Forms.TextBox outputOffsetBoxX;
private System.Windows.Forms.Label constantThreeLabelX; private System.Windows.Forms.Label constantThreeLabelX;
private System.Windows.Forms.TextBox midpointBoxX; private System.Windows.Forms.TextBox midpointBoxX;
private System.Windows.Forms.Label limitLabelX; private System.Windows.Forms.Label limitLabelX;
@ -2431,14 +2402,6 @@ namespace grapher
private System.Windows.Forms.TextBox outCapBoxXPower; private System.Windows.Forms.TextBox outCapBoxXPower;
private System.Windows.Forms.TextBox inCapBoxYPower; private System.Windows.Forms.TextBox inCapBoxYPower;
private System.Windows.Forms.TextBox inCapBoxXPower; private System.Windows.Forms.TextBox inCapBoxXPower;
private System.Windows.Forms.CheckBox powerStartsFromOneBoxY;
private System.Windows.Forms.CheckBox powerStartsFromZeroBoxY;
private System.Windows.Forms.CheckBox powerStartsFromOneBoxX;
private System.Windows.Forms.CheckBox powerStartsFromZeroBoxX;
private System.Windows.Forms.Label powerStartFromLabelY;
private System.Windows.Forms.Label powerStartFromLabelX;
private System.Windows.Forms.Label powerStartFromActiveLabelX;
private System.Windows.Forms.Label powerStartFromActiveLabelY;
} }
} }

View file

@ -82,8 +82,10 @@ namespace grapher
inCapBoxYPower, inCapBoxYPower,
outCapBoxXPower, outCapBoxXPower,
outCapBoxYPower, outCapBoxYPower,
offsetBoxX, inputOffsetBoxX,
offsetBoxY, inputOffsetBoxY,
outputOffsetBoxX,
outputOffsetBoxY,
accelerationBoxX, accelerationBoxX,
accelerationBoxY, accelerationBoxY,
decayRateBoxX, decayRateBoxX,
@ -114,10 +116,6 @@ namespace grapher
ByComponentCheckBox, ByComponentCheckBox,
gainSwitchX, gainSwitchX,
gainSwitchY, gainSwitchY,
powerStartsFromZeroBoxX,
powerStartsFromOneBoxX,
powerStartsFromZeroBoxY,
powerStartsFromOneBoxY,
XLutActiveValuesBox, XLutActiveValuesBox,
YLutActiveValuesBox, YLutActiveValuesBox,
XLutPointsBox, XLutPointsBox,
@ -138,8 +136,10 @@ namespace grapher
outCapLabelYPower, outCapLabelYPower,
CapTypeLabelXPower, CapTypeLabelXPower,
CapTypeLabelYPower, CapTypeLabelYPower,
offsetLabelX, inputOffsetLabelX,
offsetLabelY, inputOffsetLabelY,
outputOffsetLabelX,
outputOffsetLabelY,
constantOneLabelX, constantOneLabelX,
constantOneLabelY, constantOneLabelY,
decayRateLabelX, decayRateLabelX,
@ -156,8 +156,6 @@ namespace grapher
powerLabelY, powerLabelY,
expLabelX, expLabelX,
expLabelY, expLabelY,
powerStartFromLabelX,
powerStartFromLabelY,
LUTTextLabelX, LUTTextLabelX,
LUTTextLabelY, LUTTextLabelY,
constantThreeLabelX, constantThreeLabelX,
@ -179,8 +177,10 @@ namespace grapher
OutCapActiveYLabelPower, OutCapActiveYLabelPower,
CapTypeActiveXLabelPower, CapTypeActiveXLabelPower,
CapTypeActiveYLabelPower, CapTypeActiveYLabelPower,
OffsetActiveXLabel, InputOffsetActiveXLabel,
OffsetActiveYLabel, InputOffsetActiveYLabel,
OutputOffsetActiveXLabel,
OutputOffsetActiveYLabel,
AccelerationActiveLabelX, AccelerationActiveLabelX,
AccelerationActiveLabelY, AccelerationActiveLabelY,
DecayRateActiveXLabel, DecayRateActiveXLabel,
@ -197,8 +197,6 @@ namespace grapher
PowerClassicActiveYLabel, PowerClassicActiveYLabel,
ExpActiveXLabel, ExpActiveXLabel,
ExpActiveYLabel, ExpActiveYLabel,
powerStartFromActiveLabelX,
powerStartFromActiveLabelY,
MidpointActiveXLabel, MidpointActiveXLabel,
MidpointActiveYLabel, MidpointActiveYLabel,
AccelTypeActiveLabelX, AccelTypeActiveLabelX,

View file

@ -16,11 +16,11 @@ namespace grapher.Layouts
DecayRateLayout = new OptionLayout(false, string.Empty); DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty); GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty); SmoothLayout = new OptionLayout(false, string.Empty);
OffsetLayout = new OptionLayout(true, Offset); InputOffsetLayout = new OptionLayout(true, InputOffset);
LimitLayout = new OptionLayout(false, string.Empty); LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(true, PowerClassic); PowerClassicLayout = new OptionLayout(true, PowerClassic);
ExponentLayout = new OptionLayout(false, string.Empty); ExponentLayout = new OptionLayout(false, string.Empty);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty); MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty); LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty); LutPanelLayout = new OptionLayout(false, string.Empty);

View file

@ -17,11 +17,11 @@ namespace grapher.Layouts
DecayRateLayout = new OptionLayout(true, DecayRate); DecayRateLayout = new OptionLayout(true, DecayRate);
GrowthRateLayout = new OptionLayout(true, GrowthRate); GrowthRateLayout = new OptionLayout(true, GrowthRate);
SmoothLayout = new OptionLayout(true, Smooth); SmoothLayout = new OptionLayout(true, Smooth);
OffsetLayout = new OptionLayout(true, Offset); InputOffsetLayout = new OptionLayout(true, InputOffset);
LimitLayout = new OptionLayout(true, Limit); LimitLayout = new OptionLayout(true, Limit);
PowerClassicLayout = new OptionLayout(true, PowerClassic); PowerClassicLayout = new OptionLayout(true, PowerClassic);
ExponentLayout = new OptionLayout(true, Exponent); ExponentLayout = new OptionLayout(true, Exponent);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(true, Midpoint); MidpointLayout = new OptionLayout(true, Midpoint);
LutTextLayout = new OptionLayout(false, string.Empty); LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty); LutPanelLayout = new OptionLayout(false, string.Empty);

View file

@ -17,11 +17,11 @@ namespace grapher.Layouts
DecayRateLayout = new OptionLayout(false, string.Empty); DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty); GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(true, Smooth); SmoothLayout = new OptionLayout(true, Smooth);
OffsetLayout = new OptionLayout(true, Offset); InputOffsetLayout = new OptionLayout(true, InputOffset);
LimitLayout = new OptionLayout(false, Limit); LimitLayout = new OptionLayout(false, Limit);
PowerClassicLayout = new OptionLayout(false, string.Empty); PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty); ExponentLayout = new OptionLayout(false, string.Empty);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty); MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty); LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty); LutPanelLayout = new OptionLayout(false, string.Empty);

View file

@ -25,10 +25,10 @@ namespace grapher.Layouts
DecayRateLayout = new OptionLayout(false, string.Empty); DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty); GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty); SmoothLayout = new OptionLayout(false, string.Empty);
OffsetLayout = new OptionLayout(false, Offset); InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty); LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty); PowerClassicLayout = new OptionLayout(false, string.Empty);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, Exponent); ExponentLayout = new OptionLayout(false, Exponent);
MidpointLayout = new OptionLayout(false, string.Empty); MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(true, string.Empty); LutTextLayout = new OptionLayout(true, string.Empty);

View file

@ -9,12 +9,12 @@ namespace grapher.Layouts
public const string DecayRate = "Decay Rate"; public const string DecayRate = "Decay Rate";
public const string Scale = "Scale"; public const string Scale = "Scale";
public const string Exponent = "Exponent"; public const string Exponent = "Exponent";
public const string StartsFrom = "Start from"; public const string OutputOffset = "Output Offset";
public const string PowerClassic = "Power"; public const string PowerClassic = "Power";
public const string Limit = "Limit"; public const string Limit = "Limit";
public const string Midpoint = "Midpoint"; public const string Midpoint = "Midpoint";
public const string Motivity = "Motivity"; public const string Motivity = "Motivity";
public const string Offset = "Offset"; public const string InputOffset = "Input Offset";
public const string CapType = "Cap Type"; public const string CapType = "Cap Type";
public const string Weight = "Weight"; public const string Weight = "Weight";
public const string Smooth = "Smooth"; public const string Smooth = "Smooth";
@ -27,11 +27,11 @@ namespace grapher.Layouts
SmoothLayout = new OptionLayout(false, string.Empty); SmoothLayout = new OptionLayout(false, string.Empty);
ClassicCapLayout = new OptionLayout(false, string.Empty); ClassicCapLayout = new OptionLayout(false, string.Empty);
PowerCapLayout = new OptionLayout(false, string.Empty); PowerCapLayout = new OptionLayout(false, string.Empty);
OffsetLayout = new OptionLayout(false, string.Empty); InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty); LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty); PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty); ExponentLayout = new OptionLayout(false, string.Empty);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty); MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty); LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty); LutPanelLayout = new OptionLayout(false, string.Empty);
@ -59,7 +59,7 @@ namespace grapher.Layouts
protected OptionLayout PowerCapLayout { get; set; } protected OptionLayout PowerCapLayout { get; set; }
protected OptionLayout OffsetLayout { get; set; } protected OptionLayout InputOffsetLayout { get; set; }
protected OptionLayout LimitLayout { get; set; } protected OptionLayout LimitLayout { get; set; }
@ -67,7 +67,7 @@ namespace grapher.Layouts
protected OptionLayout ExponentLayout { get; set; } protected OptionLayout ExponentLayout { get; set; }
protected OptionLayout PowerStartsFromLayout { get; set; } protected OptionLayout OutputOffsetLayout { get; set; }
protected OptionLayout MidpointLayout { get; set; } protected OptionLayout MidpointLayout { get; set; }
@ -91,11 +91,11 @@ namespace grapher.Layouts
IOption decayRateOption, IOption decayRateOption,
IOption growthRateOption, IOption growthRateOption,
IOption smoothOption, IOption smoothOption,
IOption offsetOption, IOption inputOffsetOption,
IOption limitOption, IOption limitOption,
IOption powerClassicOption, IOption powerClassicOption,
IOption expOption, IOption expOption,
IOption startsFromOption, IOption outputOffsetOption,
IOption midpointOption, IOption midpointOption,
IOption lutTextOption, IOption lutTextOption,
IOption lutPanelOption, IOption lutPanelOption,
@ -112,11 +112,11 @@ namespace grapher.Layouts
(DecayRateLayout, decayRateOption), (DecayRateLayout, decayRateOption),
(GrowthRateLayout, growthRateOption), (GrowthRateLayout, growthRateOption),
(SmoothLayout, smoothOption), (SmoothLayout, smoothOption),
(OffsetLayout, offsetOption), (InputOffsetLayout, inputOffsetOption),
(LimitLayout, limitOption), (LimitLayout, limitOption),
(PowerClassicLayout, powerClassicOption), (PowerClassicLayout, powerClassicOption),
(ExponentLayout, expOption), (ExponentLayout, expOption),
(PowerStartsFromLayout, startsFromOption), (OutputOffsetLayout, outputOffsetOption),
(MidpointLayout, midpointOption), (MidpointLayout, midpointOption),
(LutTextLayout, lutTextOption), (LutTextLayout, lutTextOption),
(LutPanelLayout, lutPanelOption), (LutPanelLayout, lutPanelOption),
@ -147,11 +147,11 @@ namespace grapher.Layouts
IOption decayRateOption, IOption decayRateOption,
IOption growthRateOption, IOption growthRateOption,
IOption smoothOption, IOption smoothOption,
IOption offsetOption, IOption inputOffsetOption,
IOption limitOption, IOption limitOption,
IOption powerClassicOption, IOption powerClassicOption,
IOption expOption, IOption expOption,
IOption startsFromOption, IOption outputOffsetOption,
IOption midpointOption, IOption midpointOption,
IOption lutTextOption, IOption lutTextOption,
IOption lutPanelOption, IOption lutPanelOption,
@ -163,11 +163,11 @@ namespace grapher.Layouts
decayRateOption, decayRateOption,
growthRateOption, growthRateOption,
smoothOption, smoothOption,
offsetOption, inputOffsetOption,
limitOption, limitOption,
powerClassicOption, powerClassicOption,
expOption, expOption,
startsFromOption, outputOffsetOption,
midpointOption, midpointOption,
lutTextOption, lutTextOption,
lutPanelOption, lutPanelOption,

View file

@ -18,10 +18,10 @@ namespace grapher.Layouts
DecayRateLayout = new OptionLayout(false, string.Empty); DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty); GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty); SmoothLayout = new OptionLayout(false, string.Empty);
OffsetLayout = new OptionLayout(true, Offset); InputOffsetLayout = new OptionLayout(true, InputOffset);
LimitLayout = new OptionLayout(false, string.Empty); LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty); PowerClassicLayout = new OptionLayout(false, string.Empty);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty); ExponentLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty); MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty); LutTextLayout = new OptionLayout(false, string.Empty);

View file

@ -22,11 +22,11 @@ namespace grapher.Layouts
DecayRateLayout = new OptionLayout(false, string.Empty); DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(true, GrowthRate); GrowthRateLayout = new OptionLayout(true, GrowthRate);
SmoothLayout = new OptionLayout(false, string.Empty); SmoothLayout = new OptionLayout(false, string.Empty);
OffsetLayout = new OptionLayout(false, string.Empty); InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(true, Motivity); LimitLayout = new OptionLayout(true, Motivity);
PowerClassicLayout = new OptionLayout(false, string.Empty); PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty); ExponentLayout = new OptionLayout(false, string.Empty);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(true, Midpoint); MidpointLayout = new OptionLayout(true, Midpoint);
LutTextLayout = new OptionLayout(false, string.Empty); LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty); LutPanelLayout = new OptionLayout(false, string.Empty);

View file

@ -17,11 +17,11 @@ namespace grapher.Layouts
DecayRateLayout = new OptionLayout(true, DecayRate); DecayRateLayout = new OptionLayout(true, DecayRate);
GrowthRateLayout = new OptionLayout(false, string.Empty); GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty); SmoothLayout = new OptionLayout(false, string.Empty);
OffsetLayout = new OptionLayout(true, Offset); InputOffsetLayout = new OptionLayout(true, InputOffset);
LimitLayout = new OptionLayout(true, Limit); LimitLayout = new OptionLayout(true, Limit);
PowerClassicLayout = new OptionLayout(false, string.Empty); PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty); ExponentLayout = new OptionLayout(false, string.Empty);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty); MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty); LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty); LutPanelLayout = new OptionLayout(false, string.Empty);

View file

@ -17,11 +17,11 @@ namespace grapher.Layouts
DecayRateLayout = new OptionLayout(false, string.Empty); DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty); GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty); SmoothLayout = new OptionLayout(false, string.Empty);
OffsetLayout = new OptionLayout(false, string.Empty); InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty); LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty); PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, string.Empty); ExponentLayout = new OptionLayout(false, string.Empty);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty); MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty); LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty); LutPanelLayout = new OptionLayout(false, string.Empty);

View file

@ -15,11 +15,11 @@
DecayRateLayout = new OptionLayout(false, string.Empty); DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty); GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty); SmoothLayout = new OptionLayout(false, string.Empty);
OffsetLayout = new OptionLayout(false, string.Empty); InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty); LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty); PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(true, Exponent); ExponentLayout = new OptionLayout(true, Exponent);
PowerStartsFromLayout = new OptionLayout(true, StartsFrom); OutputOffsetLayout = new OptionLayout(true, OutputOffset);
MidpointLayout = new OptionLayout(false, string.Empty); MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(false, string.Empty); LutTextLayout = new OptionLayout(false, string.Empty);
LutPanelLayout = new OptionLayout(false, string.Empty); LutPanelLayout = new OptionLayout(false, string.Empty);

View file

@ -22,11 +22,11 @@ namespace grapher.Layouts
DecayRateLayout = new OptionLayout(false, string.Empty); DecayRateLayout = new OptionLayout(false, string.Empty);
GrowthRateLayout = new OptionLayout(false, string.Empty); GrowthRateLayout = new OptionLayout(false, string.Empty);
SmoothLayout = new OptionLayout(false, string.Empty); SmoothLayout = new OptionLayout(false, string.Empty);
OffsetLayout = new OptionLayout(false, Offset); InputOffsetLayout = new OptionLayout(false, string.Empty);
LimitLayout = new OptionLayout(false, string.Empty); LimitLayout = new OptionLayout(false, string.Empty);
PowerClassicLayout = new OptionLayout(false, string.Empty); PowerClassicLayout = new OptionLayout(false, string.Empty);
ExponentLayout = new OptionLayout(false, Exponent); ExponentLayout = new OptionLayout(false, Exponent);
PowerStartsFromLayout = new OptionLayout(false, string.Empty); OutputOffsetLayout = new OptionLayout(false, string.Empty);
MidpointLayout = new OptionLayout(false, string.Empty); MidpointLayout = new OptionLayout(false, string.Empty);
LutTextLayout = new OptionLayout(true, LUTLayoutText); LutTextLayout = new OptionLayout(true, LUTLayoutText);
LutPanelLayout = new OptionLayout(false, string.Empty); LutPanelLayout = new OptionLayout(false, string.Empty);

View file

@ -54,8 +54,10 @@ namespace grapher.Models
TextBox inCapBoxYPower, TextBox inCapBoxYPower,
TextBox outCapBoxXPower, TextBox outCapBoxXPower,
TextBox outCapBoxYPower, TextBox outCapBoxYPower,
TextBox offsetBoxX, TextBox inputOffsetBoxX,
TextBox offsetBoxY, TextBox inputOffsetBoxY,
TextBox outputOffsetBoxX,
TextBox outputOffsetBoxY,
TextBox accelerationBoxX, TextBox accelerationBoxX,
TextBox accelerationBoxY, TextBox accelerationBoxY,
TextBox decayRateBoxX, TextBox decayRateBoxX,
@ -86,10 +88,6 @@ namespace grapher.Models
CheckBox byComponentCheckBox, CheckBox byComponentCheckBox,
CheckBox gainSwitchX, CheckBox gainSwitchX,
CheckBox gainSwitchY, CheckBox gainSwitchY,
CheckBox powerStartsFromZeroBoxX,
CheckBox powerStartsFromOneBoxX,
CheckBox powerStartsFromZeroBoxY,
CheckBox powerStartsFromOneBoxY,
RichTextBox xLutActiveValuesBox, RichTextBox xLutActiveValuesBox,
RichTextBox yLutActiveValuesBox, RichTextBox yLutActiveValuesBox,
RichTextBox xLutPointsBox, RichTextBox xLutPointsBox,
@ -110,8 +108,10 @@ namespace grapher.Models
Label outCapLabelYPower, Label outCapLabelYPower,
Label capTypeLabelXPower, Label capTypeLabelXPower,
Label capTypeLabelYPower, Label capTypeLabelYPower,
Label offsetLabelX, Label inputOffsetLabelX,
Label offsetLabelY, Label inputOffsetLabelY,
Label outputOffsetLabelX,
Label outputOffsetLabelY,
Label constantOneLabelX, Label constantOneLabelX,
Label constantOneLabelY, Label constantOneLabelY,
Label decayRateLabelX, Label decayRateLabelX,
@ -128,8 +128,6 @@ namespace grapher.Models
Label powerClassicLabelY, Label powerClassicLabelY,
Label expLabelX, Label expLabelX,
Label expLabelY, Label expLabelY,
Label powerStartsFromLabelX,
Label powerStartsFromLabelY,
Label lutTextLabelX, Label lutTextLabelX,
Label lutTextLabelY, Label lutTextLabelY,
Label constantThreeLabelX, Label constantThreeLabelX,
@ -151,8 +149,10 @@ namespace grapher.Models
Label outCapActiveYLabelPower, Label outCapActiveYLabelPower,
Label capTypeActiveXLabelPower, Label capTypeActiveXLabelPower,
Label capTypeActiveYLabelPower, Label capTypeActiveYLabelPower,
Label offsetActiveLabelX, Label inputOffsetActiveLabelX,
Label offsetActiveLabelY, Label inputOffsetActiveLabelY,
Label outputOffsetActiveLabelX,
Label outputOffsetActiveLabelY,
Label accelerationActiveLabelX, Label accelerationActiveLabelX,
Label accelerationActiveLabelY, Label accelerationActiveLabelY,
Label decayRateActiveLabelX, Label decayRateActiveLabelX,
@ -169,8 +169,6 @@ namespace grapher.Models
Label powerClassicActiveLabelY, Label powerClassicActiveLabelY,
Label expActiveLabelX, Label expActiveLabelX,
Label expActiveLabelY, Label expActiveLabelY,
Label powerStartsFromActiveLabelX,
Label powerStartsFromActiveLabelY,
Label midpointActiveLabelX, Label midpointActiveLabelX,
Label midpointActiveLabelY, Label midpointActiveLabelY,
Label accelTypeActiveLabelX, Label accelTypeActiveLabelX,
@ -249,22 +247,40 @@ namespace grapher.Models
var directionalityLeft = directionalityPanel.Left; var directionalityLeft = directionalityPanel.Left;
var offsetX = new Option( var inputOffsetX = new Option(
offsetBoxX, inputOffsetBoxX,
form, form,
0, 0,
offsetLabelX, inputOffsetLabelX,
0, 0,
new ActiveValueLabel(offsetActiveLabelX, activeValueTitleX), new ActiveValueLabel(inputOffsetActiveLabelX, activeValueTitleX),
"Offset"); "Offset");
var offsetY = new Option( var inputOffsetY = new Option(
offsetBoxY, inputOffsetBoxY,
form, form,
0, 0,
offsetLabelY, inputOffsetLabelY,
optionSetYLeft, optionSetYLeft,
new ActiveValueLabel(offsetActiveLabelY, activeValueTitleY), new ActiveValueLabel(inputOffsetActiveLabelY, activeValueTitleY),
"Offset");
var outputOffsetX = new Option(
outputOffsetBoxX,
form,
0,
outputOffsetLabelX,
0,
new ActiveValueLabel(outputOffsetActiveLabelX, activeValueTitleX),
"Offset");
var outputOffsetY = new Option(
outputOffsetBoxY,
form,
0,
outputOffsetLabelY,
optionSetYLeft,
new ActiveValueLabel(outputOffsetActiveLabelY, activeValueTitleY),
"Offset"); "Offset");
var accelerationX = new Option( var accelerationX = new Option(
@ -495,20 +511,6 @@ namespace grapher.Models
outCapYPower, outCapYPower,
scaleY); scaleY);
var powerStartsFromX = new SwitchOption(
powerStartsFromLabelX,
powerStartsFromZeroBoxX,
powerStartsFromOneBoxX,
new ActiveValueLabel(powerStartsFromActiveLabelX, activeValueTitleX),
0);
var powerStartsFromY = new SwitchOption(
powerStartsFromLabelY,
powerStartsFromZeroBoxY,
powerStartsFromOneBoxY,
new ActiveValueLabel(powerStartsFromActiveLabelY, activeValueTitleY),
optionSetYLeft);
var lpNorm = new Option( var lpNorm = new Option(
new Field(lpNormBox, form, 2), new Field(lpNormBox, form, 2),
lpNormLabel, lpNormLabel,
@ -554,11 +556,11 @@ namespace grapher.Models
gainSwitchOptionX, gainSwitchOptionX,
classicCapOptionsX, classicCapOptionsX,
powerCapOptionsX, powerCapOptionsX,
powerStartsFromX, outputOffsetX,
decayRateX, decayRateX,
growthRateX, growthRateX,
smoothX, smoothX,
offsetX, inputOffsetX,
limitX, limitX,
powerClassicX, powerClassicX,
exponentX, exponentX,
@ -577,11 +579,11 @@ namespace grapher.Models
gainSwitchOptionY, gainSwitchOptionY,
classicCapOptionsY, classicCapOptionsY,
powerCapOptionsY, powerCapOptionsY,
powerStartsFromY, outputOffsetY,
decayRateY, decayRateY,
growthRateY, growthRateY,
smoothY, smoothY,
offsetY, inputOffsetY,
limitY, limitY,
powerClassicY, powerClassicY,
exponentY, exponentY,

View file

@ -29,11 +29,11 @@ namespace grapher
CheckBoxOption gainSwitch, CheckBoxOption gainSwitch,
CapOptions classicCap, CapOptions classicCap,
CapOptions powerCap, CapOptions powerCap,
SwitchOption powerStartsFrom, Option outputOffset,
Option decayRate, Option decayRate,
Option growthRate, Option growthRate,
Option smooth, Option smooth,
Option offset, Option inputOffset,
Option limit, Option limit,
Option powerClassic, Option powerClassic,
Option exponent, Option exponent,
@ -67,11 +67,11 @@ namespace grapher
Smooth = smooth; Smooth = smooth;
ClassicCap = classicCap; ClassicCap = classicCap;
PowerCap = powerCap; PowerCap = powerCap;
Offset = offset; InputOffset = inputOffset;
Limit = limit; Limit = limit;
PowerClassic = powerClassic; PowerClassic = powerClassic;
Exponent = exponent; Exponent = exponent;
PowerStartsFrom = powerStartsFrom; OutputOffset = outputOffset;
Midpoint = midpoint; Midpoint = midpoint;
WriteButton = writeButton; WriteButton = writeButton;
AccelTypeActiveValue = accelTypeActiveValue; AccelTypeActiveValue = accelTypeActiveValue;
@ -114,9 +114,9 @@ namespace grapher
public CapOptions PowerCap { get; } public CapOptions PowerCap { get; }
public SwitchOption PowerStartsFrom { get; } public Option InputOffset { get; }
public Option Offset { get; } public Option OutputOffset { get; }
public Option Limit { get; } public Option Limit { get; }
@ -227,8 +227,8 @@ namespace grapher
Smooth.Hide(); Smooth.Hide();
ClassicCap.Hide(); ClassicCap.Hide();
PowerCap.Hide(); PowerCap.Hide();
PowerStartsFrom.Hide(); OutputOffset.Hide();
Offset.Hide(); InputOffset.Hide();
Limit.Hide(); Limit.Hide();
PowerClassic.Hide(); PowerClassic.Hide();
Exponent.Hide(); Exponent.Hide();
@ -265,8 +265,8 @@ namespace grapher
args.cap.x, args.cap.x,
args.cap.y, args.cap.y,
args.capMode); args.capMode);
PowerStartsFrom.SetActiveValue(!args.powerStartFromOne); OutputOffset.SetActiveValue(args.outputOffset);
Offset.SetActiveValue(args.offset); InputOffset.SetActiveValue(args.inputOffset);
DecayRate.SetActiveValue(args.decayRate); DecayRate.SetActiveValue(args.decayRate);
GrowthRate.SetActiveValue(args.growthRate); GrowthRate.SetActiveValue(args.growthRate);
Smooth.SetActiveValue(args.smooth); Smooth.SetActiveValue(args.smooth);
@ -328,7 +328,6 @@ namespace grapher
args.cap.y = PowerCap.Out.Field.Data; args.cap.y = PowerCap.Out.Field.Data;
args.capMode = PowerCap.CapTypeOptions.GetSelectedCapMode(); args.capMode = PowerCap.CapTypeOptions.GetSelectedCapMode();
} }
if (PowerStartsFrom.Visible) args.powerStartFromOne = PowerStartsFrom.Second.Checked;
if (Limit.Visible) if (Limit.Visible)
{ {
if (args.mode == AccelMode.motivity) if (args.mode == AccelMode.motivity)
@ -342,7 +341,8 @@ namespace grapher
} }
if (PowerClassic.Visible) args.exponentClassic = PowerClassic.Field.Data; if (PowerClassic.Visible) args.exponentClassic = PowerClassic.Field.Data;
if (Exponent.Visible) args.exponentPower = Exponent.Field.Data; if (Exponent.Visible) args.exponentPower = Exponent.Field.Data;
if (Offset.Visible) args.offset = Offset.Field.Data; if (InputOffset.Visible) args.inputOffset = InputOffset.Field.Data;
if (OutputOffset.Visible) args.outputOffset = OutputOffset.Field.Data;
if (Midpoint.Visible) args.midpoint = Midpoint.Field.Data; if (Midpoint.Visible) args.midpoint = Midpoint.Field.Data;
if (LutPanel.Visible) if (LutPanel.Visible)
{ {
@ -369,8 +369,8 @@ namespace grapher
Smooth.AlignActiveValues(); Smooth.AlignActiveValues();
ClassicCap.AlignActiveValues(); ClassicCap.AlignActiveValues();
PowerCap.AlignActiveValues(); PowerCap.AlignActiveValues();
PowerStartsFrom.AlignActiveValues(); OutputOffset.AlignActiveValues();
Offset.AlignActiveValues(); InputOffset.AlignActiveValues();
Limit.AlignActiveValues(); Limit.AlignActiveValues();
PowerClassic.AlignActiveValues(); PowerClassic.AlignActiveValues();
Exponent.AlignActiveValues(); Exponent.AlignActiveValues();
@ -407,11 +407,11 @@ namespace grapher
DecayRate, DecayRate,
GrowthRate, GrowthRate,
Smooth, Smooth,
Offset, InputOffset,
Limit, Limit,
PowerClassic, PowerClassic,
Exponent, Exponent,
PowerStartsFrom, OutputOffset,
Midpoint, Midpoint,
LutText, LutText,
LutPanel, LutPanel,

View file

@ -64,7 +64,8 @@ public value struct AccelArgs
[MarshalAs(UnmanagedType::U1)] [MarshalAs(UnmanagedType::U1)]
bool gain; bool gain;
double offset; double inputOffset;
double outputOffset;
double acceleration; double acceleration;
double decayRate; double decayRate;
double growthRate; double growthRate;
@ -75,7 +76,6 @@ public value struct AccelArgs
double limit; double limit;
double midpoint; double midpoint;
double smooth; double smooth;
bool powerStartFromOne;
[JsonProperty("Cap / Jump")] [JsonProperty("Cap / Jump")]
Vec2<double> cap; Vec2<double> cap;