00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef SO_TRACKER_READER_H
00027 #define SO_TRACKER_READER_H
00028
00029 #include <Inventor/SbLinear.h>
00030 #include <Inventor/errors/SoDebugError.h>
00031
00032 #include <ScaleViz/SoScaleViz.h>
00033
00057 class SoTrackerReader
00058 {
00059
00060 public:
00061
00062
00068 SoTrackerReader(int);
00069
00073 virtual ~SoTrackerReader();
00074
00078 int getNumberOfSensors();
00079
00085 void getPosition( int id, float* pos );
00086
00090 SbVec3f getPosition( int id );
00091
00097 void getEulerAngles( int id, float* orn );
00098
00102 SbVec3f getEulerAngles( int id );
00103
00107 void getMatrix( int id, float mat[4][4] );
00108
00112 SbMatrix getMatrix( int id );
00113
00117 SbBool isLoadSuccess() {return loadSucceed; }
00118
00122 SbBool isInitSuccess() {return initSucceed; }
00123
00129 void setTransformMatrix( int id, SbMatrix RealToWorld );
00130
00135 SbMatrix getTransformMatrix( int id );
00136
00143 void setUnitScaleFactor( float );
00144
00148 float getUnitScaleFactor();
00149
00150 private:
00151
00152 void* tracker;
00153 void* (*soTrackdInitTrackerReader)( int );
00154 int (*soTrackdGetNumberOfSensors)( void* );
00155 void (*soTrackdGetPosition)(void*, int, float* );
00156 void (*soTrackdGetEulerAngles)( void*, int, float* );
00157 void (*soTrackdGetMatrix)( void*, int, float[4][4] );
00158
00159 private:
00160
00161 SbBool loadSucceed;
00162 SbBool initSucceed;
00163
00164 SbBool loadTrackdAPI();
00165
00166
00167
00168 SbMatrix* R2WMatrix;
00169
00170 float unitScaleFactor;
00171 };
00172
00173 #endif // SO_TRACKER_READER_H
00174
00175
00176
00177
00178