12 #include <matrix/vlVector.h>
13 #include <matrix/vlTaitBryan.h>
14 #include <vlutil/vlTime.h>
15 #include <vlpi/disEnums.h>
33 virtual void updateMotion(
double dtTime) = 0;
36 virtual void modelAdded(
DtModel*) = 0;
39 virtual void modelRemoved(
DtModel*) = 0;
49 virtual void setVelocity(
const DtVector32& vel,
DtTime curTime) = 0;
55 virtual const DtVector32& approxVelocity(
DtTime curTime)
const = 0;
59 virtual const DtVector32& approxUnsmoothedVelocity(
DtTime curTime)
const = 0;
62 virtual void setOrientation(
const DtTaitBryan& ori,
DtTime curTime) = 0;
66 virtual const DtTaitBryan& approxEuler(
DtTime curTime)
const = 0;
69 virtual void setAcceleration(
const DtVector32& acc,
DtTime curTime) = 0;
70 virtual const DtVector32& acceleration(
DtTime curTime)
const = 0;
73 virtual void setRotationalVelocity(
const DtVector32& vel,
DtTime curTime) = 0;
74 virtual const DtVector32& rotationalVelocity(
DtTime curTime)
const = 0;
77 virtual void setSmoothPeriod(
float period) = 0;
79 virtual void setSmoothingEnabled(
bool enabled) = 0;
83 virtual void setAlgorithm(DtDeadReckonTypes alg) = 0;
84 virtual DtDeadReckonTypes algorithm()
const = 0;
89 virtual void reset() = 0;
93 virtual void setFrozen(
bool frozen ) = 0;
94 virtual bool isFrozen()
const = 0;
97 template <
typename DeadReckoner>
117 setSmoothingEnabled(orig.mySmoothEnable);
118 setSmoothPeriod(orig.smoothPeriod());
128 virtual void updateMotion(
double dtTime)
148 DeadReckoner::setLocation(loc,curTime);
155 return DeadReckoner::approxLocation(curTime);
159 virtual void setVelocity(
const DtVector32& vel,
DtTime curTime)
161 return DeadReckoner::setVelocity(vel,curTime);
166 virtual const DtVector32& approxVelocity(
DtTime curTime)
const
168 return DeadReckoner::approxVelocity(curTime);
173 virtual const DtVector32& approxUnsmoothedVelocity(
DtTime curTime)
const
175 return DeadReckoner::approxUnsmoothedVelocity(curTime);
179 virtual void setOrientation(
const DtTaitBryan& ori,
DtTime curTime)
181 DeadReckoner::setOrientation(ori,curTime);
184 virtual void setSmoothPeriod(
float period)
186 DeadReckoner::setSmoothPeriod(period);
189 virtual void setSmoothingEnabled(
bool enabled)
191 DeadReckoner::setSmoothEnable(enabled);
196 virtual const DtTaitBryan& approxEuler(
DtTime curTime)
const
198 return DeadReckoner::approxEuler(curTime);
202 virtual void setAcceleration(
const DtVector32& acc,
DtTime curTime)
204 DeadReckoner::setAcceleration(acc,curTime);
207 virtual const DtVector32& acceleration(
DtTime curTime)
const
209 return DeadReckoner::acceleration(curTime);
213 virtual void setRotationalVelocity(
const DtVector32& vel,
DtTime curTime)
215 DeadReckoner::setRotationalVelocity(vel,curTime);
218 virtual const DtVector32& rotationalVelocity(
DtTime curTime)
const
220 return DeadReckoner::rotationalVelocity(curTime);
225 virtual void setAlgorithm(DtDeadReckonTypes alg)
227 DeadReckoner::setAlgorithm(alg);
230 virtual DtDeadReckonTypes algorithm()
const
232 return DeadReckoner::algorithm();
237 DeadReckoner::reset();
240 virtual void setFrozen(
bool frozen )
242 DeadReckoner::setFrozen( frozen );
245 virtual bool isFrozen()
const
247 return DeadReckoner::isFrozen();