21 #ifndef _OF_TRAJECTORY_ 22 #define _OF_TRAJECTORY_ 25 #include <osg/Referenced> 26 #include <OpenThreads/ReadWriteMutex> 31 class TrajectorySubscriber;
48 typedef std::vector<DataType> DataArray;
49 typedef std::vector<TrajectorySubscriber*> SubscriberArray;
80 if(_src == rhs._src && _element == rhs._element
81 && _opt == rhs._opt && _scale == rhs._scale)
return true;
86 unsigned int _element;
93 Trajectory(
unsigned int dof = 3,
unsigned int nopt = 0 );
100 void reserveMemory(
unsigned int numPoints,
bool usePos =
true,
bool useAtt =
true);
104 inline const DataArray& getPosOptList()
const {
return _posopt; }
105 inline const DataArray& getAttList()
const {
return _att; }
109 inline unsigned int getNumPos()
const {
return _numPos; }
113 void setNumOptionals(
unsigned int nopt);
114 inline unsigned int getNumOptionals()
const {
return _nopt; }
118 inline unsigned int getNumAtt()
const {
return _numAtt; }
122 void setDOF(
unsigned int dof);
123 inline unsigned int getDOF()
const {
return _dof; }
127 inline unsigned int getBase()
const {
return _base; }
143 virtual int getTimeIndex(
const DataType &t,
int &index )
const;
145 inline bool isEmpty()
const {
return _time.empty(); }
146 inline unsigned int getNumTimes()
const {
return _time.size(); }
147 virtual bool getTimeRange( DataType &begin, DataType &end )
const;
156 double getTimeDistance(
const DataType &t)
const;
159 virtual bool addTime(
const DataType &t );
163 virtual bool addPosition(
const DataType &x,
const DataType &y,
164 const DataType z = 0.0 );
165 virtual bool addPosition(
const DataType*
const pos );
166 virtual bool getPosition(
unsigned int n, DataType &x, DataType &y )
const;
167 virtual bool getPosition(
unsigned int n, DataType &x, DataType &y, DataType &z )
const;
171 virtual bool addAttitude(
const DataType &x,
const DataType &y,
172 const DataType &z,
const DataType &w );
173 virtual bool addAttitude(
const DataType*
const att );
174 virtual bool getAttitude(
unsigned int n, DataType &x, DataType &y,
175 DataType &z, DataType &w )
const;
180 virtual bool setOptional(
unsigned int index,
const DataType &x,
181 const DataType &y,
const DataType z = 0.0 );
182 virtual bool setOptional(
unsigned int index,
const DataType*
const opt );
183 virtual bool getOptional(
unsigned int n,
unsigned int index, DataType &x,
185 virtual bool getOptional(
unsigned int n,
unsigned int index, DataType &x,
186 DataType &y, DataType &z )
const;
189 virtual void clear();
197 virtual void getPoint(
unsigned int i,
const DataSource source[], DataType val[])
const;
201 virtual bool verifyData(
const DataSource source[])
const;
206 virtual unsigned int getNumPoints(
const DataSource source[])
const;
210 virtual void addSubscriber(TrajectorySubscriber* subscriber)
const;
211 virtual void removeSubscriber(TrajectorySubscriber* subscriber)
const;
212 virtual void informSubscribers();
213 inline void autoInformSubscribers(
bool autoinform) { _autoInformSubscribers = autoinform; }
223 virtual void lockData(DataLockType lockType = READ_LOCK)
const;
224 virtual void unlockData(DataLockType lockType = READ_LOCK)
const;
227 virtual ~Trajectory();
233 mutable SubscriberArray _subscribers;
234 bool _autoInformSubscribers;
241 unsigned int _numPos;
242 unsigned int _numAtt;
250 mutable OpenThreads::ReadWriteMutex _readWriteMutex;
252 mutable OpenThreads::Mutex _mutex;
275 #endif // !define _OF_TRAJECTORY_
Abstract base class that is informed of changes to Trajectory objects.
Definition: Trajectory.hpp:261
virtual void dataCleared(Trajectory *traj)=0
SourceType
Definition: Trajectory.hpp:53
double DataType
Definition: Trajectory.hpp:47
virtual void dataAdded(Trajectory *traj)=0
Definition: CoordinateAxes.hpp:29
Definition: Trajectory.hpp:69
Holds a collection of data vectors.
Definition: Trajectory.hpp:42
unsigned int getNumAtt() const
Definition: Trajectory.hpp:118
const DataArray & getTimeList() const
Definition: Trajectory.hpp:103
unsigned int getBase() const
Definition: Trajectory.hpp:127
unsigned int getNumPos() const
Definition: Trajectory.hpp:109