CrypticMeditations/code/libs/mmmath/SpringMassDamper.cpp

23 lines
418 B
C++
Raw Permalink Normal View History

2018-11-13 08:10:15 +01:00
#include "SpringMassDamper.h"
#include "Arduino.h"
SpringMassDamper::SpringMassDamper(float m, float k, float d, float* out) :
_m(m), _k(k), _d(d), _out(out) {}
float SpringMassDamper::position(int x) {
float dt = (millis() - _tick) / 1000.0f;
F = _k * (x - X) - (_d * V);
V += (F / _m) * dt;
X += V * dt;
_tick = millis();
if(_out != NULL)
*_out = X;
return X;
}