#include "TrackingDiff.h" #include TrackingDiffClass* NewTrackingDiffClass(float vel_factor, float pos_factor, float time_factor) { TrackingDiffClass* p = (TrackingDiffClass*) malloc(sizeof(TrackingDiffClass)); p->pos_factor = pos_factor; p->vel_factor = vel_factor; p->time_correction = time_factor; p->pos_predict = 0; p->vel_predict = 0; p->error = 0; return p; } void TrackingDiffUpdate(TrackingDiffClass* self, float target) { self->error = target - self->pos_predict; self->vel_predict += (self->error * self->vel_factor) * self->time_correction; self->pos_predict += (self->vel_predict + self->error * self->pos_factor) * self->time_correction; }