15 #include <matrix/vlVector.h>
16 #include <matrix/vlTaitBryan.h>
17 #include <vlutil/vlTime.h>
18 #include <vlpi/disEnums.h>
36 virtual void updateMotion(
double dtTime) = 0;
39 virtual void modelAdded(
DtModel*) = 0;
42 virtual void modelRemoved(
DtModel*) = 0;
59 virtual void setOrientation(
const DtTaitBryan& ori,
DtTime curTime) = 0;
63 virtual const DtTaitBryan& approxEuler(
DtTime curTime)
const = 0;
66 virtual void setAcceleration(
const DtVector& acc,
DtTime curTime) = 0;
70 virtual void setRotationalVelocity(
const DtVector& vel,
DtTime curTime) = 0;
71 virtual const DtVector& rotationalVelocity(
DtTime curTime)
const = 0;
74 virtual void setSmoothPeriod(
float period) = 0;
76 virtual void setSmoothingEnabled(
bool enabled) = 0;
80 virtual void setAlgorithm(DtDeadReckonTypes alg) = 0;
81 virtual DtDeadReckonTypes algorithm()
const = 0;
86 virtual void reset() = 0;
89 template <
typename DeadReckoner>
109 setSmoothingEnabled(orig.mySmoothEnable);
110 setSmoothPeriod(orig.smoothPeriod());
120 virtual void updateMotion(
double dtTime)
140 DeadReckoner::setLocation(loc,curTime);
147 return DeadReckoner::approxLocation(curTime);
153 return DeadReckoner::setVelocity(vel,curTime);
160 return DeadReckoner::approxVelocity(curTime);
164 virtual void setOrientation(
const DtTaitBryan& ori,
DtTime curTime)
166 DeadReckoner::setOrientation(ori,curTime);
169 virtual void setSmoothPeriod(
float period)
171 DeadReckoner::setSmoothPeriod(period);
174 virtual void setSmoothingEnabled(
bool enabled)
176 DeadReckoner::setSmoothEnable(enabled);
181 virtual const DtTaitBryan& approxEuler(
DtTime curTime)
const
183 return DeadReckoner::approxEuler(curTime);
189 DeadReckoner::setAcceleration(acc,curTime);
194 return DeadReckoner::acceleration(curTime);
200 DeadReckoner::setRotationalVelocity(vel,curTime);
205 return DeadReckoner::rotationalVelocity(curTime);
210 virtual void setAlgorithm(DtDeadReckonTypes alg)
212 DeadReckoner::setAlgorithm(alg);
215 virtual DtDeadReckonTypes algorithm()
const
217 return DeadReckoner::algorithm();
222 DeadReckoner::reset();