Browse Source

LowPassFilter: add div by zero check

master
Randy Mackay 11 years ago
parent
commit
cf35bd3f42
  1. 12
      libraries/Filter/LowPassFilter.h

12
libraries/Filter/LowPassFilter.h

@ -86,6 +86,12 @@ LowPassFilter<T>::LowPassFilter() : @@ -86,6 +86,12 @@ LowPassFilter<T>::LowPassFilter() :
template <class T>
void LowPassFilter<T>::set_cutoff_frequency(float time_step, float cutoff_freq)
{
// avoid divide by zero and allow removing filtering
if (cutoff_freq <= 0.0f) {
_alpha = 1.0f;
return;
}
// calculate alpha
float rc = 1/(2*PI*cutoff_freq);
_alpha = time_step / (time_step + rc);
@ -94,6 +100,12 @@ void LowPassFilter<T>::set_cutoff_frequency(float time_step, float cutoff_freq) @@ -94,6 +100,12 @@ void LowPassFilter<T>::set_cutoff_frequency(float time_step, float cutoff_freq)
template <class T>
void LowPassFilter<T>::set_time_constant(float time_step, float time_constant)
{
// avoid divide by zero
if (time_constant + time_step <= 0.0f) {
_alpha = 1.0f;
return;
}
// calculate alpha
_alpha = time_step / (time_constant + time_step);
}

Loading…
Cancel
Save