Hi,

In the universe NETMF / GHI is there any function equal to constrain the arduino?

Thanks,

Alexandre

From Brazil

Hi,

In the universe NETMF / GHI is there any function equal to constrain the arduino?

Thanks,

Alexandre

From Brazil

What does this function do?

constrain(x, a, b)

Description

Constrains a number to be within a range.

Parameters

x: the number to constrain, all data types

a: the lower end of the range, all data types

b: the upper end of the range, all data types

Returns

x: if x is between a and b

a: if x is less than a

b: if x is greater than b

You can write this function easily.

Eric

Erick, see my function:

static int constrain(int x, int a, int b)

{

int max = System.Math.Max(a, b);

int min = System.Math.Min(a, b);

int result = 0;

```
if (x > min && x < max)
result = x;
else if (x < min)
result = min;
else if (x > max)
result = max;
return result;
```

}

You only need to check if it is less than a or greater than b. You can also eliminate Min/Max dependency by comparing a and b.

You can implement this function as an extension for each numeric data type like so…

```
// Required for NETMF to recognized extension methods
namespace System.Runtime.CompilerServices
{
[AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Method)]
public sealed class ExtensionAttribute : Attribute { }
}
public static class Extensions
{
public static int Constrain (this int x, int a, int b)
{
return x < a ? a : (x > b ? b : x);
}
public static double Constrain (this double x, double a, double b)
{
return x < a ? a : (x > b ? b : x);
}
// continued... define an extension for all numeric data types
}
```

@ ransomhall

given a < b,but not in general case

I got too excited about the “one liner” So what happens in the arduino function when a>b? The help link above does not provide details in this case. I’m not sure what the most logical answer would be. switch a & b values?