8 private readonly
float alpha;
9 private float average =
float.NaN;
15 public float Average(
float value) => average =
float.IsNaN(average) ? value : ((value - average) * alpha) + average;
19 float difference = Mathf.Repeat(degrees - average, 360);
20 if (difference > 180) difference -= 360;
21 return average =
float.IsNaN(average) ? degrees : (difference * alpha) + average;
An exponential moving average is a way to calculate an average where older values have less impact on...
ExponentialMovingAverage(int lookBack=9)
Initialise with a look-back parameter - being how many points will effect the current value...
float Average(float value)
Method with side-effects. Provide the next sample in the stream and get give back the exponential mov...
float AverageAngle(float degrees)
Method with side-effects. Provide the next sample in the stream of angles and get give back the expon...