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;
45 virtual void setLocation(
const DtVector& loc, DtTime curTime) = 0;
49 virtual const DtVector& approxLocation(DtTime curTime)
const = 0;
52 virtual void setVelocity(
const DtVector& vel, DtTime curTime) = 0;
56 virtual const DtVector& approxVelocity(DtTime curTime)
const = 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;
67 virtual const DtVector& acceleration(DtTime curTime)
const = 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 template <
typename DeadReckoner>
106 setSmoothingEnabled(orig.mySmoothEnable);
107 setSmoothPeriod(orig.smoothPeriod());
117 virtual void updateMotion(
double dtTime)
135 virtual void setLocation(
const DtVector& loc, DtTime curTime)
137 DeadReckoner::setLocation(loc,curTime);
142 virtual const DtVector& approxLocation(DtTime curTime)
const
144 return DeadReckoner::approxLocation(curTime);
148 virtual void setVelocity(
const DtVector& vel, DtTime curTime)
150 return DeadReckoner::setVelocity(vel,curTime);
155 virtual const DtVector& approxVelocity(DtTime curTime)
const
157 return DeadReckoner::approxVelocity(curTime);
161 virtual void setOrientation(
const DtTaitBryan& ori, DtTime curTime)
163 DeadReckoner::setOrientation(ori,curTime);
166 virtual void setSmoothPeriod(
float period)
168 DeadReckoner::setSmoothPeriod(period);
171 virtual void setSmoothingEnabled(
bool enabled)
173 DeadReckoner::setSmoothEnable(enabled);
178 virtual const DtTaitBryan& approxEuler(DtTime curTime)
const
180 return DeadReckoner::approxEuler(curTime);
184 virtual void setAcceleration(
const DtVector& acc, DtTime curTime)
186 DeadReckoner::setAcceleration(acc,curTime);
189 virtual const DtVector& acceleration(DtTime curTime)
const
191 return DeadReckoner::acceleration(curTime);
195 virtual void setRotationalVelocity(
const DtVector& vel, DtTime curTime)
197 DeadReckoner::setRotationalVelocity(vel,curTime);
200 virtual const DtVector& rotationalVelocity(DtTime curTime)
const
202 return DeadReckoner::rotationalVelocity(curTime);
207 virtual void setAlgorithm(DtDeadReckonTypes alg)
209 DeadReckoner::setAlgorithm(alg);
212 virtual DtDeadReckonTypes algorithm()
const
214 return DeadReckoner::algorithm();